Windows Server
 Computer >> コンピューター >  >> システム >> Windows Server

【Windows Server】リモートデスクトップセッションホストの「ライセンスモードが構成されていません」エラーの原因と解決方法

エラーの内容と120日間の猶予期間について

Windows Server 2012 R2 / 2016 / 2019 で構成された RDS ファームに新しい RDSH(リモートデスクトップセッションホスト)ノードを追加する際、システムトレイに次のような警告ポップアップが表示されることがあります。

Licensing mode for the Remote Desktop Session Host is not configured.
Remote Desktop Service will stop working in 104 days.
On the RD Connection Broker server, use Server Manager to specify the Remote Desktop licensing mode and the license server.

このメッセージは、RDS ホストがまだライセンスの猶予期間(グレースピリオド)内で動作していることを示しています。120 日間の猶予期間中は、RDS ライセンスをアクティブ化していなくてもセッションホストを利用できますが、期間が満了するとユーザーは RDSH に接続できなくなり、トレイには次のエラーが表示されます。

Remote Desktop Services will stop working because this computer is past grace period and has not contacted at least a valid Windows Server 2012 license server. Click this message to open RD Session Host Server Configuration to use Licensing Diagnosis.

「リモートデスクトップライセンスサーバーが利用できないためセッションが切断された」という類似のエラーについては別記事で扱っていますが、今回のケースは状況がやや異なります。

RD Licensing Diagnoser で問題を診断する

より正確に問題を診断するには、RD Licensing Diagnoser(lsdiag.msc)を実行します。[管理ツール] → [Remote Desktop Services] → [RD Licensing Diagnoser] から起動できます。ツールのウィンドウには、次のようなエラーが表示されます。

Licenses are not available for the Remote Desktop Session Host server, and RD Licensing Diagnoser has identified licensing problem for the RD Session Host server.
Licensing mode for the Remote Desktop Session Host is not configured.
The Remote Desktop Session Host server is within its grace period, but the Session Host server has not been configured with any license server.

つまり、ライセンスモードが設定されていないため、クライアントに提供できるライセンスが存在しない状態です。

これは、管理者が RDS ライセンスサーバーおよびライセンスモードを指定していないことを意味します。RDS ホストの展開時にライセンスの種類を指定済みであっても、この設定は個別に行う必要がある点に注意してください([展開の構成] → [RD ライセンス] → [リモートデスクトップライセンスモードの選択])。

PowerShell でライセンスサーバーの設定を確認・変更する

RDS ライセンスサーバーが設定済みかどうかは、次の PowerShell コマンドで確認できます。

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

注意:Get-RDLicenseConfiguration コマンドレットは、誤った情報を返す場合があります。

ライセンスサーバーが未設定の場合は、次のコマンドで指定できます。

$obj.SetSpecifiedLicenseServerList("uk-rdslic1.woshub.com")

RD ライセンス役割をどのサーバーにインストールしたか忘れてしまった場合は、PowerShell の ActiveDirectory モデルに含まれる Get-ADObject コマンドレットを使って、AD ドメインに登録されているすべての RDS ライセンスサーバーの一覧を表示できます。

Get-ADObject -Filter {objectClass -eq 'serviceConnectionPoint' -and Name -eq 'TermServLicensing'}

方法 1:レジストリでライセンスモードを強制設定する

レジストリキー HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\RCM\Licensing Core 内の DWORD 値 LicensingMode を「5」から次のいずれかに変更します。

  • 2Per Device(デバイスごと)の RDS ライセンスモードを使用する場合
  • 4Per User(ユーザーごと)のライセンスを使用する場合

regedit.exe で手動変更してもよいですし、次の PowerShell スクリプトでまとめて設定することも可能です。

# RDS ライセンスの種類を指定:2 = Per Device CAL、4 = Per User CAL
$RDSCALMode = 2
# RDS ライセンスサーバーのホスト名
$RDSlicServer = "uk-rdslic1.woshub.com"
# サーバー名とライセンスの種類をレジストリに設定
New-Item "HKLM:\SYSTEM\CurrentControlSet\Services\TermService\Parameters\LicenseServers"
New-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Services\TermService\Parameters\LicenseServers" -Name SpecifiedLicenseServers -Value $RDSlicServer -PropertyType "MultiString"
Set-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\RCM\Licensing Core\" -Name "LicensingMode" -Value $RDSCALMode

変更を適用したら、RDSH サーバーを再起動してください。

方法 2:グループポリシー(GPO)で設定する

RDS ライセンスサーバーのパラメーターは、GPO(ローカルポリシーまたはドメインポリシー)でも構成できます。RDS サーバーがワークグループ環境(AD ドメイン未参加)にある場合は、ローカルグループポリシーエディター gpedit.msc を開き、[コンピューターの構成] → [管理用テンプレート] → [Windows コンポーネント] → [リモート デスクトップ サービス] → [リモート デスクトップ セッション ホスト] → [ライセンス] へ移動します。

設定が必要なのは、次の 2 つのポリシーです。

  • [特定のリモート デスクトップ ライセンス サーバーを使用する]:ポリシーを有効にし、RDS ライセンスサーバーのアドレスを指定します。ライセンスサーバーが同一サーバー上で動作している場合は 127.0.0.1 を入力します。
  • [リモート デスクトップ ライセンス モードの設定]:ライセンスモードを選択します。ここでは例として Per User を選択します。

サーバー再起動後に RD Licensing Diagnoser を開き、利用可能な RDS ライセンス数と選択したライセンスモードが正しく反映されているか確認しましょう。

ファイアウォールで開放すべきポート

ネットワークでファイアウォールを使用している場合は、RDSH ホストから RDS ライセンスサーバーへ向けて、次のポートを開放する必要があります。
TCP:135、UDP:137、UDP:138、TCP:139、TCP:445、TCP:49152~65535(RPC 範囲)

ポートの疎通は Test-NetConnection コマンドレットで確認できます。ローカルの Windows Defender ファイアウォールでポートが閉じている場合は、NetSecurity モジュールの PowerShell コマンドレットを使って開放できます。

注意:Windows Server のバージョンと RDS CAL の互換性

たとえば RD ライセンスサーバーに Windows Server 2012 R2 と RDS 2012 R2 用 CAL がインストールされている場合、Windows Server 2016/2019 用の RDS CAL をインストールすることはできません。この場合、正しいライセンスの種類とライセンスサーバー名を指定しても「Remote Desktop Licensing mode is not configured」エラーは消えません。古いバージョンの Windows Server は、新しいバージョン向けの RDS CAL をサポートしていないためです。

このケースでは、RD Licensing Diagnoser に次のメッセージが表示されます。

The Remote Desktop Session Host is in Per User licensing mode and no Redirector Mode, but license server does not have any installed license with the following attributes:
Product version: Windows Server 2016
Use RD Licensing Manager to install the appropriate licenses on the license server.

この場合は、まず RD ライセンスサーバー側の Windows Server をアップグレードするか、新しい RD ライセンスホストを構築する必要があります。新しいバージョンの Windows Server(例:WS 2019)であれば、以前のすべてのバージョンの Windows Server 向け RDS CAL をサポートしています。

補足:RDS サーバーがワークグループ環境にある場合、ライセンスレポートは生成されません。ただし、RDS ライセンス自体はクライアント/デバイスに対して正しく発行されます。残りの RDS CAL 数については、自分で継続的に監視する必要があります。

  1. Mac用Windowsリモートデスクトップの使い方を徹底解説!インストールから接続設定まで

    MacとWindowsの両方のPCを日常的に使用している方にとって、いちいち物理的にパソコンを切り替えるのは面倒ですよね。実は「Microsoft Remote Desktop」(Windowsリモートデスクトップ) をMacに導入すれば、1台のMacからWindowsマシンを遠隔操作でき、両方の環境を同時に活用できます。 Mac版Windowsリモートデスクトップは、Windows 10に標準搭載されているマイクロソフトの「リモートデスクトッププロトコル(RDP)」を利用し、Windowsのデスクトップ画面をmacOSの画面上に表示します。Windowsアプリの起動はもちろん、設定変更やMa

  2. Windowsでリモートデスクトップセッションを録画する方法【TweakShot Screen Recorder活用ガイド】

    遠く離れた場所にあるPCにリモート接続することは、リモートセッションアプリを使えば簡単に行えます。しかし、そのセッションを録画できるかとなると話は別です。画面と音声を同時に録画するのは決して簡単な作業ではなく、それを実現できるアプリは限られています。今回は、画面上に表示されているあらゆる内容——ウェビナー、オンライン会議、ゲームプレイ、動画ストリーミング、そして何より重要なリモートデスクトップセッション——を画像としてキャプチャし、動画として録画できる「TweakShot Screen Recorder」をご紹介します。 TweakShot Screen Recorder – 優れたスクリーン