Не понимаю, почему мой сценарий запуска GPO неправильно выполняет BCDEdit.
Среда: MS Server 2019 DC, рабочие станции Windows 10, присоединенные к домену.
Цель здесь — установить для параметра «Предотвращение выполнения данных» на группе компьютеров значение OptOut. Это можно сделать с помощью командной строки или сценария PowerShell:
Cmd: bcdedit.exe /set {current} nx OptOut
PS: bcdedit.exe /set "{current}" nx OptOut
Первоначальное руководство я получил здесь: https://techraptor.net/technology/guides/enable-data-execution-prevention-dep-via-group-policy-or-bcdeditexe .
На тестовой машине я могу подключить это к командной строке или интерфейсу PS и запустить его без проблем — когда я делаю последующий запрос с помощью BCDEdit /enum {current} (или «{current}» в PowerShell), он показывает nx как отказ.
Проблема возникает, когда я пытаюсь сделать это общедоменным с помощью объекта групповой политики. В объекте групповой политики он переходит в «Компьютер» > «Настройки Windows» > «Сценарии (запуск/завершение работы). Есть две вкладки: одна для пакетных файлов и одна для файлов PS. Я пытался использовать оба, используя либо файл PS1, либо файл .bat по мере необходимости, но, похоже, ни один из них не выполнил команду BCDEdit успешно, а файл сценария - это всего лишь команда, указанная выше, и ничего больше. Я попытался поместить рассматриваемые сценарии в конкретную папку объекта групповой политики (кнопку для которой редактор объекта групповой политики легко предоставляет вам) и папку SYSVOL\SCRIPTS, но ни в одном случае он не выполняет свою работу. Вариант PowerShell запускается с «неограниченной политикой выполнения powershell set-execution» в качестве параметра в объекте групповой политики, прямо в той же области, где вы сообщаете Windows, где находится сценарий (и я пробовал это и без этого, но безрезультатно).
Если я использую RSOP на машине, которая должна получать эту политику, я обнаруживаю, что она получает политику, и RSOP даже сообщает о времени, когда она «работала». Однако эта настройка не становится OptOut. Просмотр журнала событий для этой временной метки, похоже, не указывает на какие-либо ошибки, связанные конкретно с объектом групповой политики или сценарием.
Моя первая мысль заключалась в том, что это какая-то проблема с разрешениями для рассматриваемых папок, но, насколько я понимаю, это должно работать как СИСТЕМА - и, согласно Windows, СИСТЕМА имеет «Полный контроль» над файлами сценариев. Здесь я добавил вторую строку в сценарий, который просто использует MKDIR для размещения пустой папки на рабочем столе пользователя-администратора на рабочей станции, на которой я это тестирую. Перезагружая машину, я вижу, что nx по-прежнему является «OptIn» по умолчанию, а не «OptOut», который диктует сценарий, но, к сожалению, у меня на рабочем столе отображается тестовая папка, поэтому сценарий действительно запускается.
А именно, у меня есть сценарий, содержащий команду, которая отлично запускается вручную, но не запускается автоматически по причинам, которые я не могу понять. У меня есть два доказательства того, что этот сценарий работает (метка времени и папка, которую я ему приказал создать). Разрешения для папки, из которой он запускается, кажутся совершенно действительными, и в журнале событий нет ничего очевидного. Я мог бы сделать все это вручную, если бы мне пришлось, но это нежизнеспособно в долгосрочной перспективе, и я хотел бы использовать тот же метод для настройки других вещей, которые должны быть выполнены через CLI, чтобы этот опыт сохранялся - и это кажется, что это настолько просто, насколько это возможно.
Кто-нибудь знает, где я ошибся?