我想知道微软是否有人遇到过记不住规则名称的情况!
唯一netsh advfirewall firewall show rule
接受的是1"SQL*"
名称并且 netsh 上没有可用的模式匹配功能来帮助使用类似或^SQL.+$
使用 show 的模式查找规则,并且name=all
可以列出所有规则,但我无法找到适用于 Windows 的可靠命令行 grep 工具。
我希望能够运行这样的命令:
netsh advfirewall firewall show rule name=sql*
这可能吗?
答案1
在 PowerShell 中运行:
$fw=New-object -comObject HNetCfg.FwPolicy2
$fw.rules | findstr /i "whaturlookingfor"
更好的是:
$fw.rules | select name | select-string "sql"
答案2
这是我能做的最好的事情。有人知道如何进一步吗?比如从结果中删除/减去规则名称?
netsh advfirewall firewall show rule name=all | find "Rule Name:" | find "NameLookingFor"
答案3
在 Windows 10 上,当我执行 时,我收到一条警告netsh advfirewall
,说未来的 Windows 版本可能不再支持该功能,应该改用 PowerShell。幸运的是,楼主想要做的事情在 PowerShell 中很容易实现:
Get-NetFirewallRule -DisplayName "SQL*"
我有 1000 多条防火墙规则,这些规则是由一个随机命名的可执行文件创建的,我想删除它们。以下命令可以轻松完成此操作:
Remove-NetFirewallRule -DisplayName "*mongod.exe"
答案4
如果没有 PowerShell,您可以简单地使用带有 findstr 的正则表达式:
netsh advfirewall firewall show rule name=all | findstr /R "sql.*"