
Сценарии входа в GPO позволяют запускать сценарий BAT или PowerShell при запуске компьютера или входе/выходе пользователя. В некоторых случаях администратор хочет, чтобы определенный сценарий (команда/программа) выполнялся для каждого пользователя или компьютера только один раз и не запускался при последующих входах.
Для решения этой задачи можно использовать стандартный сценарий входа в систему, который проверяет наличие определенного флага на компьютере. Это может быть параметр реестра, текстовый файл на диске и т. д.
Например, вы хотите, чтобы определенный блок кода выполнялся только один раз при первом входе пользователя на компьютер.
- Создайте следующий BAT-файл (corp_user_init.bat) и сохраните его в
%SystemRoot%\SYSVOL\sysvol\<domain name>\scripts
на контроллере домена:@echo off
IF EXIST C:\Users\%UserName%\AppData\app_init.txt GOTO END
date /t >> C:\Users\%UserName%\AppData\app_init.txt
time /t >> C:\Users\%UserName%\AppData\app_init.txt
REM Put your code here, which will be executed once
:ENDСценарий создает небольшой текстовый файл в профиле пользователя при первом запуске. Когда сценарий запускается в следующий раз через GPO, он проверяет, существует ли этот файл на диске. Если да, то сценарий уже был выполнен, и код не нужно запускать снова. - Откройте консоль управления групповой политикой домена (
gpmc.msc
); - Создайте новую политику и свяжите ее с OU с пользователями (или компьютерами, но тогда вам придется включить Режим обработки шлейфа);
- Перейти к Конфигурация пользователя -> Настройки Windows -> Скрипты (Вход в систему / Выход из системы);
- Выберите Вход в систему;
- Нажмите Добавить и укажите путь к вашему BAT-файлу в SYSVOL (
\\woshub.com\SysVol\woshub.com\scripts
);
- После обновления параметров групповой политики на клиентском компьютере ваш сценарий будет выполняться при входе пользователя в систему. Убедитесь, что он успешно создал app_init.txt файл в профиле пользователя.
Если GPO со сценарием не был применен, используйте инструмент gpresult и методы устранения неполадок, описанные в статье Почему GPO не применяется.
- При следующем входе пользователя на компьютер основной код сценария не будет выполнен. Таким образом, сценарий фактически применяется к пользователю только один раз.
Другой способ запустить сценарий только один раз с помощью GPO — создать одноразовую задачу в планировщике задач.
- Сохраните файл сценария (это может быть как BAT-файл, так и сценарий PowerShell) в папке Sysvol на контроллере домена (
\\<your_domain_name>\SysVol\<your_domain_name>\scripts
); - Создайте новый GPO, привяжите его к OU пользователя и откройте его настройки;
- Перейдите к Предпочтения -> Настройки панели управления -> Запланированная задача -> Новая -> Немедленная задача (по крайней мере, в Windows 7);
- Укажите имя задачи;
- Откройте Действия вкладка, нажмите Новый, и укажите полный UNC-путь к файлу сценария в SYSVOL;
- Затем перейдите в раздел Общие выберите вкладку и установите флажок Применить один раз и не применять повторно вариант;
- Эта задача будет выполняться на компьютере только один раз при первом входе пользователя в систему.
-ExecutionPolicy Bypass
при запуске сценария (см. пример здесь).