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

我正在编写一个大脚本,并通过Powershell应用一系列本地策略设置。 其中大部分工作是通过Secedit导出当前安全configuration完成的,将其传递给ArrayList,根据需要添加/更新值,然后导出ArrayList并使用Secedit导入。

我的问题是我需要设置本地防火墙策略(计算机configuration\策略\ Windows设置\安全设置\高级安全Windows防火墙\高级安全Windows防火墙\ Windows防火墙属性\域configuration文件\防火墙状态),这已经造成我卡住了。

我能够使用本地防火墙设置

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

但是这不是在操纵政策。

我也可以操作在策略更改时写入/更新的registry项,但是更改这些项不会显示策略更改,例如:

 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下的安全数据库中)

我已经尝试在通过secedit导入的文件中添加registry项 – 成功加载但不操作设置。

我已经尝试使用open-netgpo – 但我无法这样做,因为这不是域join的计算机(并且永远不会join域),我无法传递一个有效的策略存储选项,以便它可以操纵本地防火墙策略

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

我希望有一种方法可以使用Powershell来更改防火墙策略,这样我就可以以自动的方式完成我需要的function。

谢谢

尝试cmd实用工具netsh

 netsh advfirewall set allprofiles firewallpolicy blockinbound,allowoutbound