У меня есть объект групповой политики, связанный с подразделением, содержащим компьютеры. Закольцованная обработка активируется набором для слияния. В пользовательской части GPO у меня есть сценарий PowerShell, который в основном проверяет, работает ли он внутри сеанса ремодирования рабочего стола (if ($ env: SESSIONNAME -ne 'Console')), а затем пытается установить переменную среды на основе модификации из $ env: CLIENTNAME.
Однако скрипт, похоже, не работает, так как на момент выполнения нет $ env: CLIENTNAME. Как я могу это исправить?
Я уже пробовал включать и отключать «Запускать сценарии входа синхронно». Если я его включу - не повезло, что кажется логичным. Когда установлено значение «Не настроено», происходит вышеупомянутое. Спасибо за ваш вклад.
[РЕДАКТИРОВАТЬ]
Когда я вызываю сценарий через «Конфигурация пользователя => Политики => Административные шаблоны => Система => Вход в систему => Запускать эти программы при входе пользователя в систему», кажется, что он работает. Однако не для каждого пользователя и со случайной задержкой.
Есть ли другой способ использовать PowerShell для запроса% CLIENTNAME%? Например, спрашивать службы удаленного рабочего стола для авторизованных пользователей ... вы видите, куда я указываю?
Эта ссылка помогла мне решить мою проблему:
Теперь я разбираю вывод qwinsta и читаю имя клиента из реестра, доступного раньше, чем var% CLIENTNAME%
Function Get-ClientName
{
$session = qwinsta $env:USERNAME
$sessionId = $session[1].subString(39,9).Trim()
return (Get-ItemProperty "HKCU:\Volatile Environment\${sessionId}\" -Name CLIENTNAME).CLIENTNAME
}
Затем я могу загрузить свой сценарий из «Конфигурация пользователя => Политики => Настройки Windows => Сценарии => Вход в систему ...»