【问题标题】:Is there a way to find which firewall-profile is active?有没有办法找到哪个防火墙配置文件处于活动状态?
【发布时间】:2022-07-12 17:12:25
【问题描述】:

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

我的 python 脚本中已经有了 powershell 命令:

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

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

有没有一种简单的方法来查找哪个防火墙配置文件已打开并处于活动状态? 在最好的情况下,该函数会给我一个类似“yes”/“no”或布尔值的字符串。

【问题讨论】:

  • Get-NetFirewallSetting |% ActiveProfile 应该告诉你哪个是活跃的。为了获得更好的可解析输出,请使用Get-NetFirewallProfile |ConvertTo-Json,然后在 python 端调用json.loads 以获取结构化数据。
  • 感谢您的快速答复。我只得到“不适用”作为答案。这是什么意思?
  • 我认为这意味着您的防火墙由 Intune 管理

标签: python powershell firewall


【解决方案1】:

是的,你可以!您只是没有定义要查询的 PolicyStore - 详情如下...

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

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

此外,需要提到“ActiveProfile”可能包含多个配置文件,因为系统可以有更多可能需要不同设置的适配器。所以这个例子也可能是普通的“Domain, Public”

有关“PolicyStore”的信息以及您经常需要它的原因:

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

来源:https://docs.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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-26
    • 2021-09-24
    • 2022-10-24
    • 2016-04-26
    • 2011-12-21
    • 1970-01-01
    • 2021-06-18
    • 1970-01-01
    相关资源
    最近更新 更多