Я отвечаю за группу компьютеров, которые обрабатывают конфиденциальные данные. Их нельзя подключить к Интернету или даже к сети компании, только к сетевому диску. Поэтому я написал командный файл на сетевом диске и запустил его на каждом компьютере, чтобы последовательно применять настройки безопасности.
Пакетный файл вызывает 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
.
Я подозреваю, ты пытаешься пройти %COMPUTERNAME%
к netsh
прямо. Он не расширяет переменные среды. Позвольте оболочке расширить переменную за вас, например:
@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
заканчивает тем, что получает сценарий с уже существующей расширенной переменной окружения.