Как запустить сценарий входа в GPO только один раз

Сценарии входа в GPO позволяют запускать сценарий BAT или PowerShell при запуске компьютера или входе/выходе пользователя. В некоторых случаях администратор хочет, чтобы определенный сценарий (команда/программа) выполнялся для каждого пользователя или компьютера только один раз и не запускался при последующих входах.

Для решения этой задачи можно использовать стандартный сценарий входа в систему, который проверяет наличие определенного флага на компьютере. Это может быть параметр реестра, текстовый файл на диске и т. д.

Например, вы хотите, чтобы определенный блок кода выполнялся только один раз при первом входе пользователя на компьютер.

  1. Создайте следующий 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, он проверяет, существует ли этот файл на диске. Если да, то сценарий уже был выполнен, и код не нужно запускать снова.
  2. Откройте консоль управления групповой политикой домена (gpmc.msc);
  3. Создайте новую политику и свяжите ее с OU с пользователями (или компьютерами, но тогда вам придется включить Режим обработки шлейфа);
  4. Перейти к Конфигурация пользователя -> Настройки Windows -> Скрипты (Вход в систему / Выход из системы);
  5. Выберите Вход в систему;
  6. Нажмите Добавить и укажите путь к вашему BAT-файлу в SYSVOL (\\woshub.com\SysVol\woshub.com\scripts);
    GPO: Запуск сценария входа в систему при входе нового пользователя
  7. После обновления параметров групповой политики на клиентском компьютере ваш сценарий будет выполняться при входе пользователя в систему. Убедитесь, что он успешно создал app_init.txt файл в профиле пользователя.
    Если GPO со сценарием не был применен, используйте инструмент gpresult и методы устранения неполадок, описанные в статье Почему GPO не применяется.
  8. При следующем входе пользователя на компьютер основной код сценария не будет выполнен. Таким образом, сценарий фактически применяется к пользователю только один раз.

Другой способ запустить сценарий только один раз с помощью GPO — создать одноразовую задачу в планировщике задач.

  1. Сохраните файл сценария (это может быть как BAT-файл, так и сценарий PowerShell) в папке Sysvol на контроллере домена (\\<your_domain_name>\SysVol\<your_domain_name>\scripts);
  2. Создайте новый GPO, привяжите его к OU пользователя и откройте его настройки;
  3. Перейдите к Предпочтения -> Настройки панели управления -> Запланированная задача -> Новая -> Немедленная задача (по крайней мере, в Windows 7);
  4. Укажите имя задачи;
    GPO создать новую запланированную задачу
  5. Откройте Действия вкладка, нажмите Новый, и укажите полный UNC-путь к файлу сценария в SYSVOL;
    запуск сценария с помощью запланированной задачи Windows
  6. Затем перейдите в раздел Общие выберите вкладку и установите флажок Применить один раз и не применять повторно вариант;
    Предпочтения групповой политики - запланированная задача Применить один раз и не применять повторно
  7. Эта задача будет выполняться на компьютере только один раз при первом входе пользователя в систему.
Если вы хотите запускать сценарии PowerShell через GPO, вам нужно настроить политику выполнения сценариев PowerShell или использовать параметр -ExecutionPolicy Bypass при запуске сценария (см. пример здесь).

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *