2013/09/13 追記。


こんにちは。Windows プラットフォーム サポートの横山です。

本日は、Windows Server 2012 リモート デスクトップ環境の構成に関するコマンドをご紹介いたします。

Windows Server 2012 リモート デスクトップ環境では、RDMS (Remote Desktop Management Service) を利用してリモート デスクトップ サービス関連の設定の変更を行います。

しかしながら、RDMS は "リモート デスクトップ サービスのインストール" を使用してリモート デスクトップ サービスのインストールを行わない限り、インストールされません。
また、"リモート デスクトップ サービスのインストール" は、非ドメイン環境では実行できず、ドメイン環境でのみ実行可能であり、ドメイン環境であってもドメイン コントローラー単一では、"リモート デスクトップ サービスのインストール" が実行できません。

その為、ドメイン コントローラーや WORKGROUP 環境の Windows Server 2012 にリモート デスクトップ セッション ホストの各種設定を行うには、WMI コマンドの利用やレジストリの編集が必要です。

※ ドメイン コントローラーへの "リモート デスクトップ サービスのインストール" については、KB2871777 にて公開されている更新プログラムをインストールして再起動することにより、実行可能となります。

 

今回は、PowerShell を利用したリモート デスクトップ セッション ホスト / リモート デスクトップ ライセンスのインストール、ライセンス サーバーの設定、また、RemoteApp の公開、RemoteApp 接続を行うための .rdp ファイルの作成方法についてお伝えいたします。

- リモート デスクトップ セッション ホストのインストール
1. [ツール] より、[Windows PowerShell] を起動します。

 

2. [リモート デスクトップ セッション ホスト] 役割サービスをインストールします。
   > Add-WindowsFeature -Name RDS-RD-Server

3. [デスクトップ エクスペリエンス] をインストールします。
   > Add-WindowsFeature -Name Desktop-Experience

4. [ライセンス診断] ツールをインストールします。
   > Add-WindowsFeature -Name RSAT-RDS-Licensing-Diagnosis-UI

5. システムの再起動を行います。

 

- リモート デスクトップ ライセンスのインストール、ライセンス サーバーの設定
1. [ツール] より、[Windows PowerShell] を起動します。

2. [リモート デスクトップ ライセンス] の役割サービスをインストールします。
   > Add-WindowsFeature -Name RDS-Licensing

3. [RD ライセンス マネージャー] をインストールします。
   > Add-WindowsFeature -Name RDS-Licensing-UI

4. [リモート デスクトップ ライセンス モード] を変更します。
   > (gwmi -Class Win32_TerminalServiceSetting -Namespace root\cimv2\TerminalServices).ChangeMode(4)
   ※ 4 は [接続ユーザー数] モードです。[接続デバイス数] モードは 2 です。
  
5. [リモート デスクトップ ライセンス サーバー] を指定します。
   > New-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Services\TermService\Parameters\LicenseServers" -Name SpecifiedLicenseServers -Value "<IP アドレス>" -PropertyType MultiString
また、以下のコマンドを実行しても同様の処理が行えます。
   > (gwmi -Class Win32_TerminalServiceSetting -Namespace root\cimv2\TerminalServices).SetSpecifiedLicenseServerList("<IP アドレス>")
コマンド例:
   > New-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Services\TermService\Parameters\LicenseServers" -Name SpecifiedLicenseServers -Value "192.168.0.1" -PropertyType MultiString
   > (gwmi -Class Win32_TerminalServiceSetting -Namespace root\cimv2\TerminalServices).SetSpecifiedLicenseServerList("192.168.0.1")

6. 以下のコマンドで正常にライセンス サーバーが指定されていることを確認します。
   > Get-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Services\TermService\Parameters\LicenseServers" -Name SpecifiedLicenseServers
   ※ 以下のコマンドを実行しても同様の処理が行えます。
   > (gwmi -Class Win32_TerminalServiceSetting -Namespace root\cimv2\TerminalServices).GetSpecifiedLicenseServerList()
 

- RemoteApp の公開方法、RemoteApp 接続用の .rdp ファイルの作成方法
1. 下記コマンドを実行し、RemoteApp として公開したいアプリケーションを登録します。
   ※ 以下は mspaint.exe を登録する手順です。
   > $regPath = "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList\Applications"
   > New-Item $regPath -Name mspaint
   > New-ItemProperty $regPath\mspaint -Name CommandLineSetting -Value 0 -PropertyType Dword
   > New-ItemProperty $regPath\mspaint -Name Name -Value Paint -PropertyType String
   > New-ItemProperty $regPath\mspaint -Name Path -Value C:\Windows\System32\mspaint.exe -PropertyType String
   > New-ItemProperty $regPath\mspaint -Name RequiredCommandLine -PropertyType String
   > New-ItemProperty $regPath\mspaint -Name SecurityDescriptor -PropertyType String
   > New-ItemProperty $regPath\mspaint -Name ShowInTSWA -Value 1 -PropertyType Dword

2. クライアントには下記内容を含む .rdp ファイルを配布します。
   =========================================
   redirectclipboard:i:1
   redirectposdevices:i:0
   redirectprinters:i:1
   redirectcomports:i:1
   redirectsmartcards:i:1
   devicestoredirect:s:*
   drivestoredirect:s:*
   redirectdrives:i:1
   session bpp:i:32
   prompt for credentials on client:i:1
   span monitors:i:1
   use multimon:i:1
   remoteapplicationmode:i:1
   server port:i:3389
   allow font smoothing:i:1
   promptcredentialonce:i:1
   authentication level:i:2
   gatewayusagemethod:i:2
   gatewayprofileusagemethod:i:0
   gatewaycredentialssource:i:0
   full address:s:<サーバー名もしくは IP アドレス>
   alternate shell:s:||mspaint <------------ レジストリ キー名
   remoteapplicationprogram:s:||mspaint <--- レジストリ キー名
   gatewayhostname:s:
   remoteapplicationname:s:Paint <---------- Name に記載のデータ
   remoteapplicationcmdline:s:
   =========================================
   ※ <------ とその後の文字列は削除してください。

  

- 参考情報
Win32_TerminalServiceSetting class (Windows)
http://msdn.microsoft.com/en-us/library/windows/desktop/aa383640(v=vs.85).aspx

Windows Server 2012 ドメイン コントローラーで "リモート デスクトップ サービスのインストール" ができない。
http://support.microsoft.com/kb/2795837

A servicing stack update is available for Windows RT, Windows 8, and Windows Server 2012: September 2013
http://support.microsoft.com/kb/2871777