Как настроить запуск скрипта PowerShell через GPO?

Evgeny Shupik 201 Баллы репутации
2025-08-28T13:41:52.1933333+00:00

Добрый день! У меня такой вопрос - нужно сформировать групповую политику в домене таким образом, чтобы запустить на некоторых рабочих станциях PowerShell-скрипт. Все это я реализовал, при входе в систему автоматически запускается скрипт и устанавливает требуемое ПО. Но мне нужно это делать один раз, чтобы при последующих вхождениях в сеанс скрипт уже не запускался - можно ли это сделать? Как настроено у меня:

User configuration->Policies->Windows settings->Scripts (Logon/Logoff)->вкладка PowerShell scripts: Script name: \share.domain.ru\Scripts$\MyPSScript.ps 1 Script parameters: -Noninteractive -ExecutionPolicy Bypass -Noprofile

Но в этом параметре нет опций вроде "запускать только один раз" - что можно придумать? Спасибо за помощь.

Windows для бизнеса | Клиент Windows для ИТ-специалистов | Устройства и развертывание | Настройка, установка или обновление
Комментариев: 0 Без комментариев

1 ответ

Сортировать по: Самые старые
  1. Harry Phan 33,320 Баллы репутации Независимый помощник
    2025-08-28T15:24:47.8966667+00:00

    Добрый день,Evgeny Shupik

    Благодарим вас за обращение и подробное описание вашей конфигурации. Мы понимаем, что вам необходимо запускать PowerShell-скрипт при входе пользователя в систему только один раз, чтобы избежать повторной установки ПО при последующих входах.

    В стандартных параметрах групповой политики для скриптов входа действительно отсутствует встроенная опция "однократного запуска". Однако вы можете реализовать это поведение с помощью одного из следующих подходов:

    A) Решение через проверку наличия файла или ключа реестра

    Добавьте в начало вашего скрипта проверку на наличие маркера (например, текстового файла или ключа реестра), который будет создаваться после первого успешного выполнения скрипта. Пример:

    Оболочка PowerShell

    $flagPath = "$env:APPDATA\MyScriptExecuted.flag"
    if (Test-Path $flagPath) {
        exit
    }
    
    # Ваш код установки ПО
    # ...
    
    New-Item -Path $flagPath -ItemType File -Force
    

    Таким образом, скрипт будет выполняться только один раз для каждого пользователя, а при следующих входах завершится сразу.

    B) Альтернатива: Использование Active Setup или Task Scheduler

    Если вы хотите более централизованное решение:

    Active Setup: Позволяет запускать команды один раз для каждого пользователя при первом входе. Требует настройки ключей в HKLM\Software\Microsoft\Active Setup\Installed Components.

    Task Scheduler через GPO: В GPO можно создать задачу с типом Immediate Task и включить опцию "Apply once and do not reapply". Это обеспечит однократный запуск скрипта при первом входе пользователя.

    Подробнее об этих методах можно ознакомиться в руководстве по однократному запуску скриптов через GPO.

    С уважением,

    Гарри Фан

    Этот ответ помог вам?

    Комментариев: 0 Без комментариев

Ваш ответ

Автор вопроса может устанавливать для ответов пометку "Принято", а модераторы — пометку "Рекомендуется". Благодаря этому пользователям становится проще понять, какой из ответов помог решить проблему автора.