netsh advfirewall 设置存储 gpo:%COMPUTERNAME% 不起作用

netsh advfirewall 设置存储 gpo:%COMPUTERNAME% 不起作用

我负责一组处理高度机密数据的计算机。它们无法连接到互联网,甚至无法连接到公司网络,只能连接到网络驱动器。因此,我在网络驱动器上编写了一个批处理文件,并在每台计算机上运行它,以一致地应用安全设置。

批处理文件netsh exec使用以下脚本调用:

advfirewall
set store gpo = %COMPUTERNAME%
reset
set store local
reset

问题是环境变量%COMPUTERNAME%无法解析为实际的计算机名称,因此 GPO 未重置,并且两个位置的设置之间存在冲突。此外,netsh advfirewall reset仅重置local存储,并且set store只能从 netsh 脚本运行(netsh advfirewall set store gpo批处理文件中的直接操作不起作用)。

如何set store访问运行批处理文件的计算机的 GPO?或者是否有其他方法可以从命令行重置 GPO 设置(适用于高级安全 Windows 防火墙)?我了解这些设置未存储在 中Registry.pol

答案1

我怀疑您试图直接传递%COMPUTERNAME%netsh它不会扩展环境变量。让 shell 为您扩展变量,如下所示:

@echo off
SET F="%TEMP%\%RANDOM%.txt"

echo advfirewall>%F%
echo set store gpo = %COMPUTERNAME%>>%F%
echo reset>>%F%
echo set store local>>%F%
echo reset>>%F%

netsh -f %F%
del %F%

netsh最终得到一个已经包含扩展环境变量的脚本。

相关内容