有没有办法找到哪个防火墙配置文件处于活动状态



服务器连接到错误的防火墙配置文件时出现问题,因此我正在尝试找到跟踪此信息的解决方案。

我已经在我的python脚本中获得了powershell命令:

subprocess.getoutput('netsh advfirewall show allprofiles')
subprocess.check_output('netsh advfirewall show currentprofile')

我还可以将它们转换为字符串。实际的问题是,这些信息看起来非常分散,在不同的系统和不同的语言上可能并不总是按照相同的顺序。

有没有一种简单的方法可以找到哪个防火墙配置文件处于打开状态并处于活动状态?在最好的情况下,函数会给我一个类似"字符串"的字符串;是"/"否";或布尔值。

是的,你可以!您刚刚没有定义要查询的PolicyStore-详细信息如下。。。

只需使用以下查询-它返回所有活动策略的名称-例如">";

Get-NetFirewallSetting -PolicyStore ActiveStore |
Select-Object -ExpandProperty ActiveProfile

此外,需要提及的是;ActiveProfile";可能包含多个配置文件,因为一个系统可能有更多可能需要不同设置的适配器。所以这个例子也可能是正常的";域,公共";

关于";PolicyStore";以及为什么你经常需要它:

此存储包含当前活动的策略,它是应用于计算机的所有策略存储的总和

来源:https://learn.microsoft.com/en-us/powershell/module/netsecurity/get-netfirewallprofile

如果您需要truefalse每个响应,您可以使用此

$intvalue = (Get-NetFirewallSetting -PolicyStore activestore).`
CimInstanceProperties.Where{$_.Name -eq "Profile"}.value
$DomainEnabled = [bool]($intvalue -band 0x1)
$PrivateEnabled = [bool]($intvalue -band 0x2)
$PublicEnabled = [bool]($intvalue -band 0x4)

对于本例,您还可以有多个$true

最新更新