【发布时间】:2021-05-31 09:44:26
【问题描述】:
我的目标是通过给定的过滤器列出所有可用的防火墙规则,并且对 Powershell 来说是全新的。
观察到一种奇怪的行为,这导致我询问是否有隐藏的东西我不知道。我可能会使用 Pipes 来完成同样的工作,但我有兴趣了解其中的原因。
Get-NetFirewallRule -DisplayGroup n*
按预期运行
Get-NetFirewallRule -DisplayName n*
按预期运行
但是当我添加/组合 -Enabled True 时,DisplayName 正在生成这样的错误消息,其中 DisplayGroup 正在生成结果。
无法使用指定的命名参数解析参数集。
- Get-NetFirewallRule -DisplayName n* -Enabled True
Get-NetFirewallRule -Enabled True | ? DisplayName -like nsc*
工作中
Windows 10 机器上的 PS 版本“5.1.177”。
【问题讨论】:
-
如果您查看the docs,您会看到几个不同的参数集; none 允许 both
DisplayName和Enabled。至于为什么不,这将是 cmdlet 开发人员的问题; PowerShell 不强制执行此操作。顺便说一句,我建议颠倒逻辑——获取与名称匹配的规则,然后按启用状态过滤,因为前者可能比后者小和/或具有内置的本机过滤器,因此在大型设备上提供更好的性能规则集。 -
明白了。谢谢你的澄清。在阅读有关 PS 的文档时,我会考虑有关参数集的信息。
标签: powershell windows-firewall-api