Добрый день,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.
С уважением,
Гарри Фан