The Remote Desktop Session Host server does not have a Remote Desktop License Server Specified

У одного з клієнтів з'явилася проблема з розгорнутою фермою термінальних серверів Remote Desktop Services на базі Windows Server 2012 R2. З якоїсь причини RDS сервер перестав видавати термінальні ліцензії користувачам, хоча роль сервера ліцензій була встановлена ​​і налаштована, а RDP CAL активовані.

При спробі користувача підключитися до термінального сервера, у нього з'являється помилка:

The remote session was disconnected because there are no Remote Desktop License Servers available to provide a license.

Please contact the server administrator.

На російській версії Windows помилка виглядає так:

Віддалений сеанс відключений, оскільки немає жодних певних сервери ліцензування віддалених робочих столів.
Зверніться до адміністратора сервера

На самому сервері при цьому реєструється помилка:

Event ID 1130
Source: TerminalServices-RemoteConnectionManagerThe Remote Desktop Session Host server does not have a Remote Desktop license server specified. To specify a license server for the Remote Desktop Session Host server, use the Remote Desktop Session Host Configuration tool.

За допомогою Server Manager перевіримо, що сервер ліцензування (Remote Desktop license server) в конфігурації RDSH вказано:

Перевірку настройки сервера ліцензування також можна виконати з PowerShell:

Get-RDLicenseConfiguration

Як ми бачимо, сервер вказано, і використовується тип ліцензування PerUser.

Утиліта RD Licensing Diagnoser також не бачить якихось проблем з настройками сервера RD і ліцензіями.

За допомогою консолі RD Licensing Manager (licmgr.exe) переконаємося, що на сервері є вільні ліцензії, але самі ліцензії з якоїсь причини користувачам не видаються (Issued = 0).

Подальший пошук по журналу подій вийшов на таку обставину:

EventID: тисячі сто двадцять вісім
Source: TerminalServices-RemoteConnectionManagerThe RD Licensing grace period has expired and the service has not registered with a license server with installed licenses. A RD Licensing server is required for continuous operation. A Remote Desktop Session Host server can operate without a license server for 120 days after initial start up.

Судячи з усього, RDSH сервер вирішив, що тестовий період використання термінального сервера втратив чинність (grace period - 120 днів), і потрібно його продовження, або активація на повноцінному сервері ліцензій RDS. Схоже на якийсь баг RDS в Windows Server 2012.

Кількість днів до закінчення RDS Grace Period можна дізнатися командою:

wmic / namespace: \\ root \ CIMV2 \ TerminalServices PATH Win32_TerminalServiceSetting WHERE (__CLASS! = "") CALL GetGracePeriodDays

Для вирішення даної проблеми потрібно на RDS сервері видалити ключ, який визначає пільговий період ліцензування (grace period licensing). Дата, яка визначає час закінчення роботи сервера в режимі grace зберігається в ключі L $ RTMTIMEBOMB (досить кумедне ім'я -TIME BOMB ....;), Що знаходиться в гілці реєстру:

HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Terminal Server \ RCM \ GracePeriod

Необхідно видалити ключ L $ RTMTIMEBOMB. Однак, для цього у адміністратора недостатньо прав.

Unable to delete all specified values.

Щоб видалити цей ключ, потрібно надати свого облікового запису права власника гілки і, потім, права на зміну (не буду детально описувати сам процес).

Тепер клацаємо ПКМ по ключі L $ RTMTIMEBOMB і видаляємо його.

Перезавантажуємо сервер, підключаємося з клієнта по RDP. Успішність видачі ліцензії перевіряємо в консолі Remote Desktop Licensing Manager.

У мене, однак, відразу не запрацювало. За допомогою наступної PowerShell команди, перевіримо, чи не встановлено сервер ліцензування:

$ Obj = gwmi -namespace "Root / CIMV2 / TerminalServices" Win32_TerminalServiceSetting
$ Obj.GetSpecifiedLicenseServerList ()

Як ви бачите, сервер ліцензування RDS не заданий (список SpecifiedLSList порожній). За допомогою наступної команди вкажемо сервер ліцензій RD.

$ Obj = gwmi -namespace "Root / CIMV2 / TerminalServices" Win32_TerminalServiceSetting
$ Obj.SetSpecifiedLicenseServerList ( "msk-rdslic.winitpro.ru")

Після цієї операції, сервер почав видавати ліцензії RD клієнтам.