こんにちは、セキュリティエンジニア ばにゃです。

本記事では、リモートデスクトップ環境で利用可能なリモートデスクトップライセンス関連のPowerShellコマンドについて、自身の備忘録も兼ねて解説します。
この記事で解説するコマンドでは以下を実施することが可能です。
前提となる環境
本記事では、以下のような環境を例として記載します。この環境で私自身が実機動作確認済みの手順となります。
- Windows Server 2019
- Windows Server 2016
- Windows Server 2012 R2
- Windows Server 2012
リモートデスクトップライセンス関連のコマンド一覧
リモートデスクトップライセンスモードの変更
リモートデスクトップサーバーのライセンスモードを変更する場合に使用します。ChangeMode()で指定する数字を 2 にすると接続デバイス数モード、4 にすると接続ユーザー数モードになります。
接続デバイス数モードに変更する場合
(gwmi -Class Win32_TerminalServiceSetting -Namespace root\cimv2\TerminalServices).ChangeMode(2)接続ユーザー数モードに変更する場合
(gwmi -Class Win32_TerminalServiceSetting -Namespace root\cimv2\TerminalServices).ChangeMode(4)
リモートデスクトップライセンスモードの確認
リモートデスクトップサーバーのライセンスモードを確認する場合に使用します。
(gwmi -Class Win32_TerminalServiceSetting -Namespace root\cimv2\TerminalServices).LicensingType出力結果の意味は以下の通りです。
| 結果 | 意味 |
|---|---|
| 2 | 接続デバイス数モード |
| 4 | 接続ユーザー数モード |
| 5 | 未設定 |
リモートデスクトップライセンスサーバーの指定
リモートデスクトップサーバーが参照するリモートデスクトップライセンスサーバーを指定する場合に使用します。既に指定済みの場合は、SetSpecifiedLicenseServerList(“IPアドレス”)で指定したライセンスサーバーに上書きされます。
(gwmi -Class Win32_TerminalServiceSetting -Namespace root\cimv2\TerminalServices).SetSpecifiedLicenseServerList("IPアドレス")例えばIPアドレスが 192.168.10.10 のライセンスサーバーを指定する場合は以下のように実行します。
(gwmi -Class Win32_TerminalServiceSetting -Namespace root\cimv2\TerminalServices).SetSpecifiedLicenseServerList("192.168.0.1")リモートデスクトップライセンスサーバーの追加
2台目以降のリモートデスクトップライセンスサーバーを指定する場合に使用します。AddLSToSpecifiedLicenseServerList(“IPアドレス”)で指定したライセンスサーバーが追加されます。
(gwmi -Class Win32_TerminalServiceSetting -Namespace root\cimv2\TerminalServices).AddLSToSpecifiedLicenseServerList("IPアドレス")例えばIPアドレスが 192.168.10.11 のライセンスサーバーを追加する場合は以下のように実行します。
(gwmi -Class Win32_TerminalServiceSetting -Namespace root\cimv2\TerminalServices).AddLSToSpecifiedLicenseServerList("192.168.10.11")リモートデスクトップライセンスサーバーの削除
指定済みライセンスサーバーの一覧からライセンスサーバーを削除する場合に使用します。RemoveLSFromSpecifiedLicenseServerList(“IPアドレス”)で指定したライセンスサーバーが削除されます。
(gwmi -Class Win32_TerminalServiceSetting -Namespace root\cimv2\TerminalServices).RemoveLSFromSpecifiedLicenseServerList("IPアドレス")例えばIPアドレスが 192.168.10.11 のライセンスサーバーを削除する場合は以下のように実行します。
(gwmi -Class Win32_TerminalServiceSetting -Namespace root\cimv2\TerminalServices).RemoveLSFromSpecifiedLicenseServerList("192.168.10.11")リモートデスクトップライセンスサーバーの確認
指定されているリモートデスクトップライセンスサーバーを確認する場合に使用します。
(gwmi -Class Win32_TerminalServiceSetting -Namespace root\cimv2\TerminalServices).GetSpecifiedLicenseServerList().SpecifiedLSListリモートデスクトップライセンス猶予期間の残日数確認
リモートデスクトップライセンス猶予期間の残日数を確認する場合に使用します。
(gwmi -Class Win32_TerminalServiceSetting -Namespace root\cimv2\TerminalServices).GetGracePeriodDays().DaysLeft参考までに、各OSのリモートデスクトップライセンス猶予期間を以下に記載しておきます。
| OS | 猶予期間 |
|---|---|
| Windows Server 2019 | 120日 |
| Windows Server 2016 | 120日 |
| Windows Server 2012 R2 | 120日 |
| Windows Server 2012 | 120日 |
| Windows Server 2008 | 120日 |
| Windows Server 2003 R2 | 120日 |
| Windows Server 2003 | 120日 |
| Windows 2000 Server | 90日 |
リモートデスクトップライセンスサーバーとの接続状態確認
リモートデスクトップサーバーとリモートデスクトップライセンスサーバーの接続状態を確認する場合に使用します。GetTStoLSConnectivityStatus(“IPアドレス”)で指定したライセンスサーバーとの接続状態を確認します。
(gwmi -Class Win32_TerminalServiceSetting -Namespace root\cimv2\TerminalServices).GetTStoLSConnectivityStatus("IPアドレス").TStoLSConnectivityStatus例えばIPアドレス 192.168.10.10 のリモートデスクトップライセンスサーバーとの接続状態を確認する場合は以下のように実行します。
(gwmi -Class Win32_TerminalServiceSetting -Namespace root\cimv2\TerminalServices).GetTStoLSConnectivityStatus("192.168.10.10").TStoLSConnectivityStatus出力結果が 11 となっている場合、ライセンスサーバーとの接続状態は問題ありません。
私自身はすべての出力結果を確認したことがあるわけではありませんが、Microsoftの情報によるとその他に以下のような出力結果があるようです。
| 結果 | 意味 |
|---|---|
| 0 | 接続状態を判断することができません。 |
| 1 | Remote Desktop Servicesは、Windows Server 2008 R2ライセンスサーバーに 接続することができます。 |
| 2 | Remote Desktop Servicesは、Windows Server 2008ライセンスサーバーに 接続することができます。 |
| 3 | Remote Desktop Servicesはライセンスサーバーに接続できますが、 サーバーの1つがベータ版のオペレーティングシステムを実行しています。 |
| 4 | Remote Desktop Servicesはライセンスサーバーに接続できますが、ライセンスサーバーと Remote Desktop Servicesのホストサーバーの間に互換性がないという問題があります。 |
| 5 | ライセンスサーバーでセキュリティグループポリシーが有効になっていますが、 Remote Desktop Servicesがグループポリシーの一部になっていません。 |
| 6 | Remote Desktop Servicesは、ライセンスサーバーに接続できません。 |
| 7 | ライセンスサーバーへの接続は可能ですが、接続の有効性が判断できません。 |
| 8 | Remote Desktop Servicesはライセンスサーバーに接続できますが、 そのユーザーアカウントはライセンスサーバーの管理者権限を持っていません。 |
| 9 | Remote Desktop Servicesは、Windows Server 2008 R2 Virtual Desktop Infrastructure (VDI)サーバーに接続することができます。 ※この値は Windows Server 2012 より前のバージョンではサポートされていません。 |
| 10 | この機能はサポートされていません。 ※この値は Windows Server 2012 よりも前のバージョンではサポートされていません。 |
| 11 | ライセンスサーバーは有効です。 ※この値は Windows Server 2012 よりも前のバージョンではサポートされていません。 |

コマンドの実行に失敗する場合
コマンドの実行に失敗する場合、PowerShellを管理者権限で起動してからコマンドを実行してください。
管理者権限で起動していない場合、以下のように「~の呼び出し中に例外が発生しました」のエラーが表示される、もしくはエラーは表示されないが実行結果に何も表示されない、といった状態になることがあります。

“~” の呼び出し中に例外が発生しました: “”
発生場所 行:1 文字:1
+ (gwmi -Class Win32_TerminalServiceSetting -Namespace root\cimv2\Termi …
+
+ CategoryInfo : NotSpecified: (:) []. MethodInvocationException
+ FullyQualifiedErrorId : WMIMethodException
参考情報
Microsoft ドキュメント
本記事で解説したPowerShellコマンドについては、以下 Microsoft の情報も参考にしてみてください。
関連記事
リモートデスクトップ関連の記事については以下も参考にしてください。
関連書籍
リモートデスクトップの基本的な知識や、リモートデスクトップ / RemoteAppプログラム / リモートデスクトップゲートウェイ / リモートデスクトップライセンスサーバー の 構築手順 について、わかりやすく説明されている書籍です。
本記事では基本的にリモートデスクトップサーバーの構築手順については記載していないので、そのあたりの詳しい情報が必要な場合におすすめの書籍です。


コメント