In this article, we’ll consider the installation, configuration, and activation of the Remote Desktop Licensing role on Windows Server 2019 and 2016, as well as the installation and activation of the RDS client access licenses (CALs).
I remind you that after the installation of the Remote Desktop Session Host role, users can use it only for 120 days of a trial period (evaluation license), and users can’t connect to an RDS host afterward. According to Microsoft licensing rules, all users or devices that use RDS features must be licensed. To register and issue Remote Desktop Client Access Licenses (RDS CALs), there is a separate Windows service in the RDS role called Remote Desktop License Server.
- Install the Remote Desktop Licensing Role on Windows Server 2019/2016
- Activating the RDS License Server on Windows Server
- RDS CALs: Types of Remote Desktop Client Access Licenses
- Installing RDS CALs on Windows Server 2019/2016
- RDS CAL Usage Reports
- How to Remove RDS CALs from an RD License Server?
- Configuring RDS Licenses on RD Session Hosts
Install the Remote Desktop Licensing Role on Windows Server 2019/2016
You can deploy the Remote Desktop License service on any domain server. It is not necessary to install it on one of the servers on the RDSH farm.
Before you start the installation, add a new server to the Terminal Server License Servers domain security group (or make sure you have the permission to change this group membership), otherwise, the server won’t be able to issue RDS Per User CAL to the domain users.
You can install Remote Desktop Licensing using Server Manager. To do it, select the Remote Desktop Services role in the Add Roles and Features Wizard.
Select Remote Desktop Licensing as the role service.
It remains to wait until the installation of the role is completed.
The RDS-Licensing service is managed using the Remote Desktop Licensing Manager console (licmgr.exe
).
In Windows Server, it’s easier to install roles and features using PowerShell. To install the RDS Licensing Service and RD Licensing Diagnoser, just run one command:
Install-WindowsFeature RDS-Licensing –IncludeAllSubFeature -IncludeManagementTools
To list the RDS services installed on the host, use the command:
Get-WindowsFeature -Name RDS* | Where installed
Activating the RDS License Server on Windows Server
In order to issue licenses to RDP clients, your RDS License Server must be activated. To do it, open the Remote Desktop Licensing Manager (licmgr.exe
), right-click the name of your server, and select Activate Server.
The RDS licensing server activation wizard will start. Here you will need to select the activation method you prefer. If your server is connected to the Internet, it can automatically connect to Microsoft servers and activate the RDS license server. If there is no direct Internet access from the server, you can activate the server using a web browser or by phone.
Then you must fill in some information about your company (some of the fields are required).
It remains to click the Finish button.
If you right-click the server name in the console and select Review Configuration, you can verify that the RDS License Server is activated and can be used to activate RDSH clients in your domain.
This license server is a member of the Terminal Server License Servers group in Active Directory. This license server will be able to issue RDS Per User CALs to users in the domain, and you will be able to track the usage of RDS Per User CALs.
This license server is registered as a service connection point (SCP) in Active Directory Domain Services.
RDS CALs: Types of Remote Desktop Client Access Licenses
Each user or device that connects to Remote Desktop Session hosts must have a client access license (CAL). There are two types of RDS CALs:
- Per-Device CAL – is the permanent license type assigned to a computer (device) that connects to the RDS server more than once (when a device is first connected, a temporary license is issued to it). These licenses are not concurrent, i.e., if you have 10 Per Device licenses, only 10 hosts can connect to your RDS server. The current OVL RDS CAL is called:
WinRmtDsktpSrvcsCAL 2019 SNGL OLV NL Each AP DvcCAL
; - Per-User CAL – is the type of license that allows a user to connect to the RDS server from any number of computers/devices. This type of license is associated with an Active Directory user and issued not permanently, but for a specific period of time. The license is issued for a period of 52 to 89 days (random number). The current Open Value license of this type is called
WinRmtDsktpSrvcsCAL 2019 SNGL OLV NL Each AP UsrCAL
.If you try to use RDS 2019 Per User CAL in a workgroup (not in a domain), then the RDSH server will forcibly ending a user session every 60 minutes with a message: “Remote Desktop License Issue: There is a problem with your Remote Desktop license, and your session will be disconnected in 60 minutes”. Therefore, for RDS servers in a Windows Workgroup environment, you need to use the only device licensing (Per Device RDS CALs).Note. We should note that the 2016 RDS CAL may be installed only on a licensing server running Windows Server 2016 or 2019. Installing RDS CALs to the previous Windows Server versions is not supported. Those, you cannot install 2016 RDS CALs on a Windows Server 2012 R2 licensing host.When trying to add new RDS CALs 2019 on Windows Server 2016, an error will appear:
RD Licensing Manager The license code is not recognized. Ensure that you have entered the correct license code.
Installing RDS CALs on Windows Server 2019/2016
Now you must install the pack of Remote Desktop client licenses (RDS CAL) you have purchased on the License Server.
Right-click your server in Remote Desktop Licensing Manager and select Install Licenses.
Select the activation method (automatic, online, or by phone) and the license program (in our case, it is Enterprise Agreement).
Many enterprise agreement numbers for RDS have already been leaked on the Internet. I think it won’t be a problem to find the numbers (4965437), you don’t even need to look for rds cracks or activators.The next steps of the wizard depend on which license program you have selected. In the case of an Enterprise Agreement, you must specify its number. If you have chosen License Pack (Retail Purchase), enter the 25-character product key you got from Microsoft or a partner.
Specify the product version (Windows Server 2019/2016), license type (RDS Per user CAL), and the number of licenses to be installed on the server.
After that, the server can issue licenses (RDS CAL) to clients.
You can convert RDS User CALs to Device CALs (and vice versa) using the Convert Licenses menu item in the RD Licensing Manager console.
If you have run out of free RDS licenses, you can revoke previously issued RDS Device CALs for inactive computers using the following PowerShell script:
$RevokedPCName=”lon-bc1-123”
$licensepacks = Get-WmiObject win32_tslicensekeypack | where {($_.keypacktype -ne 0) -and ($_.keypacktype -ne 4) -and ($_.keypacktype -ne 6)}
$licensepacks.TotalLicenses
$TSLicensesAssigned = gwmi win32_tsissuedlicense | where {$_.licensestatus -eq 2}
$RevokePC = $TSLicensesAssigned | ? sIssuedToComputer -EQ $RevokedPCName
$RevokePC.Revoke()Up to 20% of Per-Device RDS CALs can be revoked. Per-User CALs cannot be revoked.RDS CAL Usage Reports
In the RDS License Console, you can generate a license usage report. To do this, select Create Report -> CAL Usage from the server context menu.
However, I prefer to use PowerShell to report RDS CAL usage. The following script will show the remaining number of licenses in all RDS CAL packs:
Import-Module RemoteDesktopServices -ErrorAction Stop
Set-Location -Path 'rds:' -ErrorAction Stop
$licenses = (Get-Item -Path RDS:\LicenseServer\LicenseKeyPacks\* | Where-Object Name -Like "-Per User-*").Name
$total=0;
$issued=0;
foreach ($license in $licenses) {
$count=(Get-Item -Path RDS:\LicenseServer\LicenseKeyPacks\$license\TotalLicenses).CurrentValue
$total= $total + $count
$count2=(Get-Item -Path RDS:\LicenseServer\LicenseKeyPacks\$license\IssuedLicensesCount).CurrentValue
$issued= $issued + $count2
}
$available = $total - $issued
Write-Host "Total Licenses available: $available"You can run this PowerShell script via Zabbix and set an alert if the remaining number of licenses is less, for example, 5.
The following Powershell script will allow you to generate a Per User CAL Report:
Import-Module RemoteDesktopServices -ErrorAction Stop
Set-Location -Path 'rds:' -ErrorAction Stop
$path = “C:\Reports\RDS_CAL_Usage.csv”
$fileName = (Invoke-WmiMethod Win32_TSLicenseReport -Name GenerateReportEx).FileName
$fileEntries = (Get-WmiObject Win32_TSLicenseReport | Where-Object FileName -eq $fileName).FetchReportEntries(0,0).ReportEntries
$objArray = @()
foreach($entry in $fileEntries){
$objArray += $entry | select User, ProductVersion, CALType, ExpirationDate
$objArray[-1].User = $objArray[-1].User.Split('\') | select -Last 1
$time = $objArray[-1].ExpirationDate.Split('.') | select -first 1
$objArray[-1].ExpirationDate = [datetime]::ParseExact($time, "yyyyMMddHHmmss", $null)
}
$objArray | Export-Csv -Path $path -Delimiter ',' -NoTypeInformationHow to Remove RDS CALs from an RD License Server?
If you want to move your RDS CAL license packs from one Remote Desktop licensing server to another, you can remove the installed RDS CAL license pack from the licensing server using PowerShell.
Using the following cmdlet, you can list all the installed RDS CAL packs on the server:
Get-WmiObject Win32_TSLicenseKeyPack|select-object KeyPackId,ProductVersion,TypeAndModel,AvailableLicenses,IssuedLicenses |ft
Find the KeyPackId value for the RDS CAL package that you want to remove and run the command:
wmic /namespace:\\root\CIMV2 PATH Win32_TSLicenseKeyPack CALL UninstallLicenseKeyPackWithId yourKeyPackId
You can also completely remove all CALs by re-creating the RDS license database. To do this, stop the Remote Desktop Licensing service:
Stop-Service TermServLicensing
Rename the file
C:\Windows\System32\lserver\TLSLic.edb
toC:\Windows\System32\lserver\TLSLic.edb_bak
and start the service:Start-Service TermServLicensing
After that, all RDS CAL licenses will be removed, and you must reactivate them.
Configuring RDS Licenses on RD Session Hosts
After the RDS License Server is activated and being run, you can reconfigure RD Session Host to obtain CAL licenses from this server. You can set the license type and specify the name of the license server from the Server Manager GUI, using PowerShell, or Group Policy.
To change the name/address of the licensing server on the RDS host, open Server Manager -> Remote Desktop Services -> Collections. In the upper right menu “Tasks” select “Edit Deployment Properties”.
In the deployment properties, go to the RD Licensing tab, select the Remote Desktop licensing mode, and set the RDS license server. Click Add -> Ok.
If the licensing type is not set on the RDSH server, you will receive the error “Licensing mode for the Remote Desktop Session Host is not configured”.You can change the RDS license server address and CAL type using PowerShell:
$obj = gwmi -namespace "Root/CIMV2/TerminalServices" Win32_TerminalServiceSetting
Then specify the license type you need:
$obj.ChangeMode(4)
Note. Enter 4 if the server must use Per User licensing type, and 2, if it is Per Device.Then specify the name of the RDS License Server:
$obj.SetSpecifiedLicenseServerList("rdslic2016.woshub.com")
And check the current settings:
$obj.GetSpecifiedLicenseServerList()
If you want to assign the RDS licensing server parameters via Group Policy, you need to create a new GPO and link it to the OU with RDS servers (or you can specify the name of the RDS licensing server using the Local Group Policy Editor –
gpedit.msc
). The RD licensing settings are located under the following GPO section: Computer Configuration -> Policies -> Admin Templates -> Windows Components -> Remote Desktop Services -> Remote Desktop Session Host -> Licensing.There are two Remote Desktop settings that we need to configure:
- Use the specified Remote Desktop license servers – the address of the License Server is set;
- Set the Remote Desktop licensing mode – select RDS CAL license type.
RDSH hosts use the following network ports to obtain an RDS license from the RDS Licensing server. Make sure that they are not blocked by firewalls (or Windows Defender Firewall):- TCP/135 – Microsoft RPC;
- UDP/137 – NetBIOS Datagram Service;
- UDP/138 – NetBIOS Name Resolution;
- TCP/139 – NetBIOS Session Service;
- TCP/445 – SMB;
- TCP/49152–65535 – RPC dynamic address range
You can check for open ports using the PortQry tool or the Test-NetConnection cmdlet.
Try to check the RD License Server status and the number of the issued licenses using the Remote Desktop Licensing Diagnoser tool (
lsdiag.msc
or Administrative Tools -> Remote Desktop Services -> RD Licensing Diagnoser). RD Licensing Diagnoster can be installed on RDSH servers using Server Manager (Features -> Remote Server Administration Tools -> Role Administration Tools -> Remote Desktop Services Tools -> Remote Desktop Licensing Diagnoser Tools).If the RDSH server is not configured to use an RDS license server, the following warnings will appear in the Licensing Diagnoser console:
Licenses are not available for this Remoter Desktop Session Host server, and RD Licensing Diagnose has identified licensing problems for the RDSH.
Number of licenses available for clients: 0
The licensing mode for the Remote Desktop Session Host server is not configured.
Remote Desktop Session Host server is within its grace period, but the RD Session Host server has not been configured with any license server.
If you installed RDSH on the Windows Server Evaluation edition, do not forget to convert it to the full version according to the guide. Without conversion, RDSH services on such a host will only work for 120 days, even if you target it to an activated RDS license server.If there are no warnings, and you see the message “RD Licensing Diagnoser did not identify any licensing problems for the Remote Desktop Session Host server”, then the RDSH server can successfully receive RDS CALs for remote users and/or devices.
Note. In our case, after we specified the new License Server address the following error started to appear on the RDP client: “The remote session was disconnected because there are no Remote Desktop License Servers available to provide a license”. The problem can be solved by removing the L$RTMTIMEBOMB key from the registry on the RDSH server.
23 comments
RD Licensing Diagnoser won’t appear until you install the Remote Desktop Session host role.
is it necessary to install ADDS to activate CAL in Windows server 2016 Standard?
I got an internal inquiry, though I am not convinced why they want to know the details (which server). We have a cluster of dual (active/backup) servers, where the authentication licensing is configured on the main then backup servers (WS2016). A group of users(say 10) initiated sessions via remote desktop to the cluster, but none of the servers is showing any licensing authentication (No of licenses is shown as 0 on the dashboard). But sessions/connections are up. The question is how to determine which server is providing which authentication licensing number to which user, and how to visualize that (not sure if authentication license manager can do that)? Initially 50 licenses x 4 groups (i.e. total 200 licenses) were configured on the main then backup servers. It might be confusing and difficult to understand the situation. I hope a professional administrator can advise me and appreciate your early feedback. Thanks.
I don’t understand your architecture … If you have 2 RDSH servers, it would be correct to combine them into one RDS farm. You can use any of these servers or third server (for example, with the RD Connection Broker role) an RDS license server.
Thank you Sooo much… This is great work. Knowledge sharing is very very valuable……
if you configured as “per user” no way to track, if you configured as per device you can find out which server connected and licenses assigned numbers etc.
great article. Really helpful
Many thanks! Helped me Install the license correctly.
Hi, i have a Windows 2016 Server VM hosted on VMware, The 120 day grace period expired so i bought 5 CAL licences as a number of users need to log on to this VM. I followed the above steps. I activated the Licence Server on the VM then proceeded to add the CAL licences on the same server. Every thing looked good on Licence Manager with Licence Server Activated and 5 available CAL User licences. However when i try to remote onto the VM it says “No Remote Licence Servers available to provide a licence”. Also in RD Diagnoser states no licences available / The licensing mode for the remote desktop Host Server is not configured / The Remote Desktop Session Host server is not configured with any licence server. Have I missed something obvious?
Check this post https://woshub.com/licensing-mode-rds-host-not-configured/
Hi,
I used RDS 2019 Per User CAL in a workgroup (not in a domain), and now I have error message ” remote desktop issue”.
Also, I installed license.
Could you please help me?
Should I install ADDS role?
Thanks , I just install my server 2019 RDS User Cal on the server 2019 , and I bought both products on ??? , it is working with your instruction how to install the cals , thank you
This is the best article about RSD and licensing. In other documents the authors always consider/install license service role on the RDS as well. So I was not sure if have to install it while I have a separated License server and I couldn’t find how I can set it (the option for setting a separate license server does not exist in Server manager Tools). This article helped me a lot. Many thanks!
Haven’t all NETBIOS tasks (Ports 137, 138, 139) been accomplished by port 445 since Windows 2000 Server? I don’t want to open up more ports than needed. Is there a special task that these ports are performing that warrants their use?
In current builds of Windows, NETBIOS ports are not used for SMB traffic. But I don’t know for sure if they are used for RDS licensing or not. This port list is taken from Microsoft guidelines.
Try to check if RDS licensing works without open netbios ports.
Hey
Thank you for the description and guidance writing.
In my case, I bought an RDS Cal license for 50 users and all have been assigned. I am having new devices to add adding to those existing 50.
Can it be possible to add an additional RDS license without removing or losing the existing one?
Thanking you in advance for your quick response
RDS Host and RDS licensing servers are in the same domain. tell me how to ADDS server take licenser from RDS Licensing server
You must specify the name/IP address of your RDS Licensing server manually (via GPO, RDS depoyment configuration, or PowerShell).
ADDS does not know where your RDS Lic servers are running.
There is only one Terminal Server License Servers group, in which all hosts with the RDS Licensing role can be listed.
Thank you , I just followed the instructions ,and install the server 2019 RDS Users cal successfully
Thanks for the good explanation. But, what I am wondering after a new installation of the Windows Server 2022 Standard – without activation of RDS CAL yet – that it works currently without issues with several client-server applications.
What I did:
1. Install the Remote Desktop Licensing Role on Windows Server 2022(!)
2. Activated the RDS License Server
3. Installed RDS CALs – per device (as there is no domain)
What I didn’t:
4. Didn’t configure RDS Licenses on RD Session Hosts (the same server)
a) Does it work currently due to grace period (of 120 days)? Can this grace period be monitored?
b) If I check the still available licenses, all of them are still available, none of them has been utilized
Something strange: If I recreate the license DB and restart of licensing service the server is already activated…
Thanks for your feedback(s)!
I think the grace period is being used on your RDSH host. Check the number of days remaining until the end of the RDS grace period with the command:
wmic /namespace:\\root\CIMV2\TerminalServices PATH Win32_TerminalServiceSetting WHERE (__CLASS !="") CALL GetGracePeriodDays
https://woshub.com/the-remote-desktop-session-host-server-does-not-have-a-remote-desktop-license-server-specified/
I am currently using a Server 2019 Licensing Server with installed 2016 CALs.
The Server works fine even on the TS-Server side but it alway shows up the same amount on avail. CALs and used CALs, is there any way to make sure that used calls will show up correct on the RD Licensing Diagnoser?
Licensing Server has been added via GPO.
Thanks
I followed this guide to activate on a Win Server 2019 the RDS License Server and install 2019 CALs.
Strange thing is that CALs are isseud to every user which tries to connect to RemoteApps but only the first connection is accepted and the next are refused with message “The number of connections to this computer is limited and all connections are in use right now. Try connecting later or contact your system administrator”.
There are no GPOs or deployement properties which are limiting the max number of connections.
Do you have any idea?