我想知道是否有人在微软曾经遇到过不能记住规则名称的情况!
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.*"