我正在编写一个大脚本,并通过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