我负责处理高度机密数据的一组计算机.它们无法连接到Internet甚至是公司网络,只能连接到网络驱动器.所以我在网络驱动器上写了一个批处理文件,并在每台计算机上运行它以始终如一地应用安全设置.
- advfirewall
- set store gpo = %COMPUTERNAME%
- reset
- set store local
- reset
问题是环境变量%COMPUTERNAME%无法解析为实际的计算机名称,因此GPO不会重置,并且两个位置的设置之间存在冲突.此外,netsh advfirewall reset仅重置本地存储,而set store只能从netsh脚本运行(批处理文件中的直接netsh advfirewall set store gpo不起作用).
如何设置存储以访问运行批处理文件的计算机的GPO?或者是否有另一种方法可以从命令行重置GPO设置(对于具有高级安全性的Windows防火墙)?我知道这些设置不存储在Registry.pol中.
我怀疑你是想尝试将%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最终得到一个已经包含扩展环境变量的脚本.