想了解为什么Powershell参数在某些情况下不起作用
我的目标是通过给定的过滤器列出所有可用的防火墙规则,这对Powershell来说是全新的 观察到一个奇怪的行为,这让我问,是否有什么隐藏的东西,我不知道。我可能会使用管道来完成同样的任务,但我感兴趣的是,为什么要理解是否存在这样的问题想了解为什么Powershell参数在某些情况下不起作用,powershell,windows-firewall-api,Powershell,Windows Firewall Api,我的目标是通过给定的过滤器列出所有可用的防火墙规则,这对Powershell来说是全新的 观察到一个奇怪的行为,这让我问,是否有什么隐藏的东西,我不知道。我可能会使用管道来完成同样的任务,但我感兴趣的是,为什么要理解是否存在这样的问题 Get-NetFirewallRule -DisplayGroup n* 功能如期 Get-NetFirewallRule -DisplayName n* 功能如期 Get-NetFirewallRule -DisplayName n* 但是,当我添加/组合
Get-NetFirewallRule -DisplayGroup n*
功能如期
Get-NetFirewallRule -DisplayName n*
功能如期
Get-NetFirewallRule -DisplayName n*
但是,当我添加/组合启用的True时,DisplayName会生成这样一条错误消息,其中DisplayGroup会生成一个结果
无法使用指定的命名参数解析参数集
- Get-NetFirewallRule-DisplayName n*-Enabled True
Get-NetFirewallRule | ? {($_.DisplayName -like "nsc*") -and ($_.Enabled -eq $true)}
如果你看一下,你会看到几个不同的参数集;无允许同时启用
DisplayName
和功能。至于为什么不,这将是cmdlet开发者的一个问题;PowerShell不强制执行此操作。顺便提一下,我建议反转逻辑——获取与名称匹配的规则,然后按启用状态筛选,因为前者可能比后者小,并且/或者具有内置的本机筛选器,因此在大型规则集上提供更好的性能。明白了。谢谢你的澄清。在阅读有关PS的文档时,我将考虑有关参数集的信息。