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.

The remote session was disconnected because there are no Remote Desktop License Servers available to provide a licenseНа самом сервере при этом регистрируется ошибка:

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.

Event-ID 1130 TerminalServices-RemoteConnectionManagerС помощью Server Manager проверим, что сервер лицензирования (Remote Desktop license server) в конфигурации RDSH указан:

Настройки RD licensingПроверку настройки сервера лицензирования также можно выполнить из PowerShell:

Get-RDLicenseConfiguration

Get-RDLicenseConfigurationКак мы видим, сервер указан, и используется тип лицензирования PerUser.

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

RD Licensing DiagnoserС помощью консоли RD Licensing Manager (licmgr.exe) убедимся, что на сервере имеются свободные лицензии, но сами лицензии по какой-то причине пользователям не выдаются (Issued = 0).

Не выдаются лицензии RDДальнейший поиск по журналу событий вышел на следующее событие:

EventID: 1128
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.

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

GetGracePeriodDaysДля решения данной проблемы нужно  на RDS сервере удалить ключ, определяющий льготный период лицензирования (grace period licensing). Дата, определяющая время окончания работы сервера в режиме grace хранится в ключе L$RTMTIMEBOMB (довольно забавное имя –TIME BOMB …. ;), находящемся в ветке реестра:

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

CurrentControlSet\Control\Terminal Server\RCM\GracePeriodНеобходимо удалить ключ L$RTMTIMEBOMB. Однако, для этого у администратора недостаточно прав.

Unable to delete all specified values.

Реестр: Unable to delete all specified valuesЧтобы удалить этот ключ, нужно предоставить своей учетной записи права владельца ветки и, затем, права на изменение (не буду подробно описывать сам процесс).

Разрешения на ветку GracePeriod

Теперь щелкаем ПКМ по ключи L$RTMTIMEBOMB и удаляем его.

Удалить ключ L$RTMTIMEBOMB

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

Remote Desktop Licensing ManagerУ меня, однако, сразу не заработало. С помощью следующей PowerShell команды, проверим, задан ли сервер лицензирования:

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

GetSpecifiedLicenseServerListКак вы видите, сервер лицензирования не задан (список SpecifiedLSList пуст). С помощью следующей команды укажем сервер лицензий RD.

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

SetSpecifiedLicenseServerListПосле этой операции, сервер начал выдавать лицензии RD клиентам.


Предыдущая статья Следующая статья

Комментариев: 6 Оставить комментарий

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Я не робот( Обязательно отметьте)