Сървърът за хост на отдалечен работен плот няма посочен сървър за лиценз за отдалечен работен плот

Един от клиентите имаше проблем с разгърнатата ферма за сървър на терминални терминали за отдалечени услуги на базата на Windows Server 2012 R2. По някаква причина RDS сървърът спря да издава лицензи за терминали на потребителите, въпреки че ролята на лицензиращия сървър е инсталирана и конфигурирана и RDP CAL е активиран.

Когато потребителят се опита да се свърже към терминален сървър, той получава грешка:

Отдалечената сесия беше прекъсната, тъй като няма достъпни сървъри за отдалечен работен плот, които да предоставят лиценз.

Моля, свържете се с администратора на сървъра.

В руската версия на Windows грешката изглежда така:

Отдалечената сесия е прекъсната, тъй като няма налични сървъри за лицензиране на отдалечен работен плот.
Свържете се с вашия администратор на сървър

В същото време на самия сървър се регистрира грешка:

Идентификационен номер на събитието: 1130
Източник: TerminalServices-RemoteConnectionManagerЗавързващият сървър за отдалечен работен плот не е посочен лицензен сървър за отдалечен работен плот. За да посочите лицензен сървър за сървъра на отдалечен работен стол сесия, използвайте инструмента за конфигуриране на хоста на отдалечен работен плот.

Използвайки Server Manager, ние проверяваме дали лицензният сървър за отдалечен работен плот в конфигурацията на RDSH е:

Можете също да проверите конфигурацията на сървъра за лицензиране от PowerShell:

Get-RDLicenseConfiguration

Както виждаме, сървърът е посочен и се използва типът лицензиране PerUser.

Помощната програма за диагностика на RD Licensing също не вижда проблеми с настройките и лицензите на RD сървъра.

Използвайки конзолата на RD Licensing Manager (licmgr.exe), уверете се, че сървърът има безплатни лицензи, но самите лицензи не се издават на потребителите по някаква причина (Issued = 0).

По-нататъшното търсене в дневника на събитията стигна до следното събитие:

EventID: 1128
Източник: TerminalServices-RemoteConnectionManagerThe гратисен период за лицензиране на RD е изтекъл и услугата не е регистрирана на лицензен сървър с инсталирани лицензи. За непрекъсната работа е необходим сървър за лицензиране на RD. Сървърът на хоста на отдалечен работен плот може да работи без лицензен сървър за 120 дни след първоначалното стартиране.

Очевидно RDSH сървърът е решил, че пробният период за използване на терминалния сървър е изтекъл (гратисен период - 120 дни) и той трябва да бъде подновен или активиран на пълноценен лицензиран сървър на RDS. Изглежда някаква грешка с RDS в Windows Server 2012.

Броят на дните до края на градисния период на RDS може да бъде намерен с командата:

wmic / пространство на имена: \\ root \ CIMV2 \ TerminalServices PATH Win32_TerminalServiceSetting WHERE (__CLASS! = "") CALL GetGracePeriodDays

За да разрешите този проблем, трябва да премахнете ключа на RDS сървъра, който определя лицензирането на гратисен период. Датата, която определя времето, когато сървърът завърши в гратисен режим, се съхранява в ключа L $ RTMTIMEBOMB (доста смешно име е TIME BOMB ....;), разположен в клона на системния регистър:

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

Трябва да изтриете ключа L $ RTMTIMEBOMB. Администраторът обаче няма достатъчно права за това..

Не могат да се изтрият всички посочени стойности.

За да премахнете този ключ, трябва да дадете на акаунта си правата на собственика на клона и, след това, правото да се променя (няма да описвам подробно самия процес).

Сега кликнете с десния бутон върху клавишите L $ RTMTIMEBOMB и го изтрийте.

Рестартираме сървъра, свързваме се от клиента чрез RDP. Проверете успеха на лиценза в конзолата за отдалечен работен плот.

Обаче не ми се получи веднага. Използвайки следната команда 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 лицензи на клиенти.