通过 Powershell 编辑本地 Windows 防火墙策略

通过 Powershell 编辑本地 Windows 防火墙策略

我正在编写一个大型脚本,该脚本通过 Powershell 遍历并应用大量本地策略设置。大部分操作都是通过 Secedit 导出当前安全配置,将其传递给数组列表,根据需要添加/更新值,然后导出数组列表并使用 Secedit 重新导入来完成的。

我的问题是我需要设置本地防火墙策略(计算机配置\策略\Windows 设置\安全设置\高级安全 Windows 防火墙\高级安全 Windows 防火墙\Windows 防火墙属性\域配置文件\防火墙状态),但这导致我陷入困境。

我可以使用以下方法操作本地防火墙设置

   $Domain = Get-NetFirewallProfile -name domain
   $domain | Set-NetFirewallProfile -DefaultInboundAction allow

但这不算操纵政策。

我还能够操作在策略更改时写入/更新的注册表项,但是更改这些注册表项并不会显示策略更改,例如:

HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\WindowsFirewall\DomainProfile\enablefirewall=4,1

变成:

HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\WindowsFirewall\DomainProfile\enablefirewall=4,0

如果运行 gpupdate /force,则不显示已更改的策略 - 此设置将被清除(从内存中这是因为该策略包含在 c:\windows\security 下的安全数据库中)

我尝试将 Reg Key 添加到通过 secedit 导入的文件中 - 该文件成功加载但无法操作设置。

我尝试使用 open-netgpo - 但无法使用,因为这不是加入域的机器(并且永远不会加入域),而且我无法为 policystore 传递有效的选项,以便让它操纵本地防火墙策略

我理想情况下希望通过本地策略来控制这一点,而不是仅仅通过活动防火墙设置。

我希望有一种方法可以使用 Powershell 更改防火墙策略,以便我可以以自动方式完成我需要做的事情。

谢谢

答案1

尝试 cmd 实用程序网络管理员

netsh advfirewall set allprofiles firewallpolicy blockinbound,allowoutbound 

相关内容