如何使用netsh来查找使用模式的规则

我想知道是否有人在微软曾经遇到过不能记住规则名称的情况!
netsh advfirewall firewall show rule只接受1个名称,netsh上没有可用的模式匹配工具来帮助查找使用"SQL*"^SQL.+$等模式的规则^SQL.+$
使用显示和name=all可以列出所有规则,但我无法find一个坚实的命令行grep工具的Windows。

我想能够像这样运行一个命令:

 netsh advfirewall firewall show rule name=sql* 

这可能吗?

在PowerShell中运行:

 $fw=New-object -comObject HNetCfg.FwPolicy2 $fw.rules | findstr /i "whaturlookingfor" 

更好的是:

 $fw.rules | select name | select-string "sql" 

这是我最好的办法。 任何人都知道如何进一步? 就像从结果中删除/减去规则名称?

 netsh advfirewall firewall show rule name=all | find "Rule Name:" | find "NameLookingFor" 

您可以尝试selectstring :

 netsh advfirewall firewall show rule name=all | select-string -pattern "Hyper-V" 

在Windows 10上,当我执行netsh advfirewall时会收到一个警告,说未来的Windows版本可能不再支持该function,而应该使用PowerShell。 幸运的是,在PowerShell中,OP想要做的事情很简单:

Get-NetFirewallRule -DisplayName "SQL*"

我有1000多个防火墙规则是由我想删除的随机命名的可执行文件创build的。 下面的命令使得这很容易做到:

Remove-NetFirewallRule -DisplayName "*mongod.exe"

没有PowerShell你可以简单地使用findtr的正则expression式:

 netsh advfirewall firewall show rule name=all | findstr /R "sql.*"