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