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

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

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

相关内容