获取Windows防火墙组是否包含所有启用规则

时间:2020-08-09 16:52:41

标签: powershell firewall powershell-4.0 windows-firewall

无论Windows防火墙组包含所有启用的规则还是禁用的规则,我都希望获取布尔值。我正在尝试通过此命令获取详细信息

Get-NetFirewallRule -DisplayGroup "XYZ" -Enabled "True"

但是,这将向我返回在XYZ组中启用的每个规则的详细信息。

我想执行类似的操作

如果防火墙组包含10条规则并且启用了这10条规则,则模块返回true,否则返回false。

if("All the rules in a group is enabled"){*Do some stuff*} else{"Do some different stuff"}

我该怎么做?任何其他PowerShell模块也将起作用。

1 个答案:

答案 0 :(得分:0)

如果您简单地颠倒逻辑检查是否有任何启用的属性为false,则可以实现所需的结果。

# If any one is false it will do other stuff
if(Get-NetFirewallRule -DisplayGroup "Network Discovery" -Enabled "false")
{
    "Do other stuff"
}
else
{
    "Do stuff"
}

您还可以检查启用的属性数组中是否存在false

# If all are True, it will do stuff
if('false' -notin (Get-NetFirewallRule -DisplayGroup "Network Discovery").enabled)
{
    "Do stuff"
}
else
{
    "Do other stuff"
}