Есть ли параметр GPO для отключения заставки времени простоя для подключений RDP, но сохранить параметры заставки времени простоя для интерактивного входа в систему?
Изменить: все пользователи являются пользователями TS, а также локальными, поэтому они находятся в одном OU. Нам нужно, чтобы заставка была отключена, когда они RDP.
Несколько месяцев назад я опубликовал здесь свое решение этой проблемы. В качестве реакции на сообщение tfrederick74656 (ниже) я заявил, что у меня есть лучшее решение с использованием таргетинга на уровне элементов для удаленного рабочего стола.
После того, как я опубликовал это, он работал один или два дня, а потом больше ничего не делал. После нескольких месяцев занятий другими делами и размышлений о том, что на самом деле происходит, я начал все сначала. И на этот раз у меня действительно есть решение проблемы!
Цель: все ноутбуки, настольные компьютеры и серверы с политикой блокировки экрана, кроме RDP.
Это больше не решение для нацеливания на уровень элементов, а сценарий и один параметр вместе в объекте групповой политики. Как уже говорилось в других местах, вам понадобятся четыре настройки:
Включить хранитель экрана
Включена защита паролем хранителя экрана
Включено Принудительная заставка экрана
Включен ScreenSaveTimeOut [время в секундах]
Поскольку я не знаю, какая настройка отвечает за то, чтобы эта штука работала, я хотел включить их все в сценарий. Одного параметра мне не удалось найти, поэтому он отделен от остальных: «Принудительная заставка». (Вам не нужно сообщать системе, какая заставка вам понадобится.) Еще нам понадобится скрипт: LockDesktopAfter3MinutesExceptRDP.PS1
Вот объект групповой политики: Конфигурация пользователя - Политики - Административные шаблоны - Панель управления - Персонализация - Принудительная конкретная заставка: Включено (вам не нужно сообщать системе, какая заставка вам понадобится).
А вот сценарий, который я добавил в GPO:
$File = "c:\temp\sessions.txt"
query session > $File
$text = Get-Content $File
ForEach ($Line in $text)
{
If ($Line -like '*>console*')
{
#console session
Set-ItemProperty -Path "HKCU:\Software\Policies\Microsoft\Windows\Control Panel\Desktop\" -Name ScreenSaveActive -Value 1
Set-ItemProperty -Path "HKCU:\Software\Policies\Microsoft\Windows\Control Panel\Desktop\" -Name ScreenSaverIsSecure -Value 1
Set-ItemProperty -Path "HKCU:\Software\Policies\Microsoft\Windows\Control Panel\Desktop\" -Name ScreenSaveTimeOut -Value 180
}
ElseIf ($Line -like '*>rdp-tcp*')
{
#RDP session
Set-ItemProperty -Path "HKCU:\Software\Policies\Microsoft\Windows\Control Panel\Desktop\" -Name ScreenSaveActive -Value 0
Set-ItemProperty -Path "HKCU:\Software\Policies\Microsoft\Windows\Control Panel\Desktop\" -Name ScreenSaverIsSecure -Value 0
Set-ItemProperty -Path "HKCU:\Software\Policies\Microsoft\Windows\Control Panel\Desktop\" -Name ScreenSaveTimeOut -Value 86400
}
}
# Apply this new policy now (immediately after this registry change)
Start-Sleep -s 10
Start-Process -FilePath "rundll32.exe" -ArgumentList "user32.dll, UpdatePerUserSystemParameters 1, True"
И вот о чем сценарий:
Когда вы вводите «запрос сеанса» в поле cmd, вы получите свой сеанс и возможные другие сеансы в нескольких строках. В начале строки вашего собственного сеанса стоит знак «больше».
Сценарий PowerShell считывает этот вывод построчно и проверяет наличие ‘> console’ или ‘> rdp-tcp’. Теперь вы знаете, имеете ли вы дело с удаленным рабочим столом - рабочим столом или консолью-рабочим столом. Теперь вы можете изменить поведение блокировки рабочего стола в зависимости от ситуации, изменив элементы реестра.
Но это только половина решения.
Настоящая проблема заключалась в том, что вы должны сказать системе, что хотите получить результат СЕЙЧАС. Это делается путем запуска последней строки скрипта.
Надеюсь, это вам поможет.
Итак, как отмечает @ELT, вам нужно ввести политику обратной связи, поэтому полная настройка будет:
Эта последняя политика заставит вычислить параметры этого GPO, как если бы пользователь принадлежит к OU, где находится сервер. Следовательно, возьмем «Включить заставку: отключено».
Я знаю, что это старый вопрос, и это немного хакерский ответ, но вы можете просто создать элемент реестра предпочтений групповой политики, чтобы отключить заставку, когда имя сеанса содержит RDP. Вы можете настроить элемент реестра, чтобы установить время ожидания на что-то нелепое, например, 9999 минут:
Затем настройте таргетинг, чтобы он применялся только тогда, когда имя сеанса совпадает с сеансом RDP. Подстановочного знака нет, но число увеличивается при каждом входе в систему по RDP и сбрасывается при перезагрузке, так что просто добавьте кучу.
Не совсем элегантное решение, но оно выполнит свою работу. Убедитесь, что вы создали это как политику пользователя, и отметьте поле «запускать в контексте текущего пользователя».
Я бы поместил пользователей TS в отдельное OU для этого Техническая статья Microsoft.
Измените этот заказ на покупку в оснастке групповой политики в разделе:
Никогда не делал этого с заставками, но реализовал аналогичную политику с принтерами.
GPO, который нацелен только на конкретное подразделение с терминальными серверами - примечание * мы нацелены на компьютерные объекты. Используйте политику обратной связи для принудительного применения настроек заставки для пользователей; если он настроен правильно, он должен применяться ко всем пользователям в вход в систему.