Политика лимита простоя RDS задана на 3 часа, а сессии отключаются через 30 минут: кто переопределяет групповую политику на Windows Server 2019 и 2022

Что было. Доменная политика «Задать ограничение по времени для активных, но бездействующих сеансов» на 3 часа применяется к узлам на Windows Server 2016 и 2019 в одном подразделении. На 2016 работает, на 2019 сессии отключаются через 30 минут. gpresult /h показывает, что политика на 2019 применена. Позже подтвердили то же на 2022. Официального объяснения за два года не появилось.

Что нашли участники.

  1. Настройки коллекции сеансов (Диспетчер серверов → Службы удалённых рабочих столов → Коллекция → Свойства → Сеанс) хранятся отдельно и на узлах фермы могут перекрывать политику. Если коллекция была создана с лимитом 30 минут, именно он и действует. Выставить в коллекции «Никогда» или нужное значение и проверить снова.
  2. Реестр напрямую. Значение, которое политика должна записать: HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services\MaxIdleTime (DWORD, миллисекунды; 3 часа = 10800000). Один участник добился результата, задав его вручную и убедившись, что политика не пишет туда своё. Параллельно проверить HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp\MaxIdleTime (настройка уровня узла, без политики).
  3. Свойства пользователя. Вкладка «Сеансы» у учётной записи (в домене или локально) имеет собственные лимиты и по умолчанию наследует настройки сервера; если там что-то задано, оно перекрывает узел.
  4. Обход: задача планировщика раз в 15 минут с Invoke-RDUserLogoff для сессий, простаивающих дольше нужного, по данным Get-RDUserSession/query user. Работает независимо от того, кто и что переопределяет.

Порядок разбора у себя.

  • reg query "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v MaxIdleTime и то же для MaxDisconnectionTime: совпадает ли с политикой.
  • Get-RDSessionCollectionConfiguration -CollectionName X -Connection: лимиты коллекции.
  • Свойства тестового пользователя → Сеансы.
  • Журнал «TerminalServices-LocalSessionManager/Operational», событие 40: код причины 5 (лимит) подтверждает, что отключает именно лимит, а не сеть.
  • Не забыть про политики пользовательской конфигурации того же раздела: они применяются к пользователю и перекрывают компьютерные при конфликте.

Про 30 минут. Это подозрительно круглое число: значение по умолчанию у некоторых шаблонов коллекций и у ряда сторонних инструментов управления. Если ни одна из четырёх точек не содержит его, искать агент управления или скрипт на сервере.

Лимиты сессий описаны в документации Microsoft.