Windows Virtual Desktop #49 Azure Portal から RDP 設定が詳細に出来るようになった

この記事のWVDは”Windows Virtual Desktop Spring 2020 Release”が対象です。

いつの間にか Azure Portal の Host Pool の設定画面から RDP に関する設定が細々と出来るようになっていたのでその変更内容を紹介します。

1. 以前の設定画面

以前の記事 “WVD Spring 2020 #34 いつの間にかHost pool の RDP Settings の設定画面が変わっている” でも紹介していましたが2020年6月に RDP の設定はテキストボックスでパラメータを直接記述する方法に変わりました。

この変更の前までは以下のスクリーンショットの通り、設定項目ごとに GUI で設定出来ていたのですが、この GUI ではカメラのリダイレクトの項目が存在せず、当時リリースされた Media Optimization for Microsoft Temas で需要が増えることを見越して上記のテキストボックスでの設定方式に変わったと考えています。 

2. 新しい設定画面

2020年10月10日現在の Azure Portal の Host Pool の設定画面は以下になります。 左メニューに “設定 > RDP Properties” が追加されています。

5つの設定項目があることがわかります。 “Connection information” , “Session behaviour” , “Device redirection” , “Display settings” , “Advanced” の5つです。また、 “Download template” という機能もあるようです。

Microsoft Docs でも 2020年10月9日に該当機能のドキュメントが更新されています。

既定値も紹介されています。URL はこちら

以下、1つ1つ順番に見ていきまが、Microsoft Docs で以前から説明があった RDP Properties の主要な項目を Azure Portal から設定できるようになっています。

2.1. RDP Properties > Connection information

”Connection information” には3つの設定があることがわかります。

Credential Security Support Provider

OS が CredSSP をサポートする場合に利用するかどうかを指定します。

この設定(enablecredsspsupport)に関するマニュアルのはURLはこちら

CredSSP がそもそも何か?ですが、Credential Security Support Provider の略称です。詳細は Microsoft Docs からの引用となりますが、クライアントの資格情報を接続先に delegate する機能のようです。 普段あまり意識したことが無かったのであまり情報をもっていません。 

The Credential Security Support Provider protocol (CredSSP) is a Security Support Provider that is implemented by using the Security Support Provider Interface (SSPI). CredSSP lets an application delegate the user’s credentials from the client to the target server for remote authentication. CredSSP provides an encrypted Transport Layer Security Protocol channel. The client is authenticated over the encrypted channel by using the Simple and Protected Negotiate (SPNEGO) protocol with either Microsoft Kerberos or Microsoft NTLM.

Reconnection settings

クライアントが再接続する時に既存の切断されたセッションに接続するか新規セッションとして接続するかの指定です。

この設定(disableconnectionsharing)に関するマニュアルの URL はこちら。 

Alternate shell

セッション開始時に指定のプログラムを実行できる機能です。

この設定(alternate shell)に関するマニュアルの URL はこちら。 

この機能は面白いというか実際の運用に有用です。 以下のような使い方が出来ると思います。

  • ユーザにお知らせを通知する。 例えば、Webサイトでもどこかの共有ファイルにあるWord文書でも、個別に作った簡単なアプリケーションでも、を利用しメンテナンス情報などをサインイン後に表示させることが出来ます。 
  • 初回展開時の処理を実行する。 例えば、仮想マシンを展開したあとの最初のサインイン時のみ実施したい処理(レジストリ変更だったり、ファイルの書き換えだったり)を実行させ、あとは実行済であることをレジストリキーかどこかのファイルに書き出しておいて次回の実行時にはスキップなど。
  • まあ、ログオンスクリプトやスタートアップスクリプトでも同様なことは出来そうですが。

2.2. Session behaviour

“Sessin behaviour” には5つの設定があります。

Reconnection

ネットワーク接続が中断された場合など、クライアントがリモートコンピューターへの再接続を自動的に試行するかどうかの設定。

この設定(autoreconnection enabled)に関するマニュアルの URL はこちら。 

Bandwidth auto detect

Network type を自動検出するかどうかの設定。 “Network type” はマニュアルからの原文のままですが、具体的に何をどう検出し、その結果どうなるのかは不明。bandwidth というと帯域幅なのかと思うのですが次の”Network auto detect”が帯域幅の自動検出の設定なんですよね。

この設定(bandwidthautodetect)に関するマニュアルの URL はこちら。 

Network auto detect

ネットワークの帯域幅を自動検出するかどうかの設定。 検出すると同動作するのかはマニュアルに記載なし。 同様に自動検出を無効にした場合の挙動も不明。 帯域幅を数値で指定する設定などもない。

この設定(networkautodetect)に関するマニュアルの URL はこちら。 

Compression

Windows Virtual Desktop の仮想マシンからローカルコンピュータへデータを送信時に一括の圧縮(bulk compression)するかどうかの設定。 ローカルコンピュータと Windows Virtual Desktop 間のネットワークが高速だったり、ローカルコンピュータおよび仮想マシンの CPU 使用率を減らしたい場合に使えそうです。どれくらい CPU 使用率が変わるかは実験しないとわからないですが。 圧縮してもよいことは無いのでネットワークの帯域幅に問題が無ければ本当は無効にしたいところですよね(既定値はON)。

この設定(compression)に関するマニュアルの URL はこちら。 

Video playback

ビデオ再生時に効率性が良いマルチメディアストリーミング機能を利用するかどうかの設定。 マルチメディアストリーミングの詳細はマニュアルには記載なし。

この設定(videoplaybackmode)に関するマニュアルの URL はこちら。 

2.3. Device redirection

こちらは12項目を設定可能です。

Audio and video > Microphone redirection

ローカルコンピュータのマイクのリダイレクトの設定。 既定値は OFF なので Teams 会議などで音声入力を使う場合は ON にしましょう。

この設定(audiocapturemode)に関するマニュアルの URL はこちら

Audio and video > Redirect video encoding

ビデオリダイレクトのエンコーディングの有効・無効の設定。 挙動の詳細はマニュアルに記載なし。

この設定(encode redirected video capture)に関するマニュアルの URL はこちら

Audio and video > Encoded video quality

ビデオエンコードの品質の指定。 0:High Compression / 1:Medium Compression / 2: Low Compression の3つから選択。 既定は 0:High。

この設定(redirected video capture encoding quality)に関するマニュアルの URL はこちら

Audio and video > Audio output location

ローカルデバイスへの音声出力をリダイレクトするかの設定。 0: Local / 1:Remote / 2: 無効。 既定は 0: Local なので仮想マシンの音声はローカルデバイスで出力されます。 仮想マシン側で音声をキャプチャしたい場合は 1:Remote を指定します。 音声を全く利用しない(禁止したい)場合は 2 を指定します。

この設定(audiomode)に関するマニュアルの URL はこちら

Local devices and resources > Camera redirection

カメラのリダイレクトの設定。 すべてのカメラデバイスをリダイレクトすることも、USBのデバイス情報などを指定し限定して指定することも可能です。既定値は無効なのでマイク同様に Teams 会議などで利用する場合は有効化しましょう。

この設定(camerastoredirect)に関するマニュアルの URL はこちら

Local devices and resources > USB device redirection

プラグアンドプレイデバイスのリダイレクトの設定。すべてのデバイスをリダイレクトするか、hardware ID を指定して限定するか、そして無効を指定できます。 既定値は無効です。 Azure Portal を利用しない場合は 動的なリダイレクトも設定できるようです。

この設定(devicestoredirect)に関するマニュアルの URL はこちら

Local devices and resources > Drive/storage redirection

ドライブのリダイレクトの設定です。ローカルデバイスのすべてのドライブをリダイレクトするか、手動で指定するか、動的なリダイレクト、そして無効を指定できます。 既定は無効です。

この設定(drivestoredirect)に関するマニュアルの URL はこちら

Local devices and resources > Clipboard redirection

クリップボードのリダイレクトの設定です。 ON か OFF かの指定となり、方向、例えばローカルデバイスから仮想マシンは許可し、仮想マシンからローカルデバイスは無効にするという設定は出来ません。 この辺は Citrix や Horizon より劣っているところになります。

この設定(redirectclipboard)に関するマニュアルの URL はこちら

Local devices and resources > COM ports redirection

COM ポートのリダイレクトの設定です。 ON か OFF かの指定です。 以前から時間があったらネットワーク機器をシリアルケーブルで接続し、それを Windows Virtual Desktop の仮想マシンで操作出来るか試したいとは思っているのですが手付かず。 あまり需要がないかもですが、これが出来るとシリアル接続が必要な運用保守の環境を Windows Virtual Desktop 上で一元管理できるかなと。一元管理のメリットは環境の統一だったり、各種ファイルやデータの管理面だったり、操作履歴・画面録画などによる統制の強化だったり。

この設定(redirectcomports)に関するマニュアルの URL はこちら

Local devices and resources > Printer redirection

ローカルデバイスのプリンタのリダイレクトの設定です。  ON か OFF かの指定です。

この設定(redirectprinters)に関するマニュアルの URL はこちら

Local devices and resources > Smart card redirection

ローカルデバイスの Smartcard のリダイレクトの設定です。 ON か OFF かの指定です。 仮想マシン側でのアプリケーション対応は必要ですがスマートカードによる認証強化に必要な機能です。 公共系や金融などで需要がありそうな機能です。

この設定(redirectsmartcards)に関するマニュアルの URL はこちら

Local devices and resources > USB redirection

USB のリダイレクションです。 先に説明した “USB device redirection” との違いは要確認。 ”USB device redirection” はマニュアル上はプラグアンドプレイデバイスのリダイレクト、この“USB redirection” は USB リダイレクトとのこと。 マニュアル読む限りは“USB device redirection”やカメラ以外のUSBデバイスのリダイレクトのようです。  テストしないとわからない部分はありますが、USB 接続のプリンタやスキャナやペンタブレットや10キー、その他 USB 接続の制御機械などが使えるかもしれません。もしかすると USB 接続のディスプレイも。まあ USB の処理をソフトウェアでエミュレートすることになるので仮にディスプレイをリダイレクトできたとしても使い物になるかは???ですね。 あとは 3D CAD などで利用する 3D マウスなどもこの機能でリダイレクトすることになるかもしれません。

この設定(usbdevicestoredirect)に関するマニュアルの URL はこちら

2.4. Display settings

ここでは11項目を設定可能です。

Multiple displays

マルチモニターを許可するかどうかの設定。 既定は有効。

この設定(use multimon)に関するマニュアルの URL はこちら

Selected monitors

ローカルディスプレイを指定する設定。

この設定(selectedmonitors)に関するマニュアルの URL はこちら

Maximize to current displays

最大化した時にフルスクリーンにするかどうかの設定。

この設定(maximizetocurrentdisplays)に関するマニュアルの URL はこちら

Multi to single display switch

フルスクリーンを終了するときに、マルチディスプレイリモートセッションが自動的にシングルディスプレイに切り替わるかどうかの設定。

この設定(singlemoninwindowedmode)に関するマニュアルの URL はこちら

Screen mode

接続を開始した時に全画面表示するかどうかの設定。

この設定(screen mode id)に関するマニュアルの URL はこちら

Smart sizing

ローカルコンピュータがウィンドウサイズに合うようにリモートセッションのコンテンツをスケーリングするかどうかの設定。

この設定(smart sizing)に関するマニュアルの URL はこちら

Dynamic resolution

ローカルウィンドウのサイズが変更されたときに、リモートセッションの解像度を自動的に更新するかどうかの設定。

この設定(dynamic resolution)に関するマニュアルの URL はこちら

Desktop size

事前定義されたオプションのセットからリモートセッションデスクトップのサイズを指定します。デスクトップの高さとデスクトップの幅が指定されている場合、この設定は上書きされます。

-0: 640×480
– 1: 800×600
– 2: 1024×768
– 3: 1280×1024
– 4: 1600×1200

この設定(desktop size id)に関するマニュアルの URL はこちら

Desktop height (pixels)

高さの解像度の設定。

この設定(desktopheight)に関するマニュアルの URL はこちら

Desktop width (pixels)

幅の解像度の設定。

この設定(desktopwidth)に関するマニュアルの URL はこちら

Desktop scale factor

リモートセッションのスケール係数を指定して、コンテンツを大きく表示します。(100, 125, 150, 175, 200, 250, 300, 400, 500)

この設定(desktopscalefactor)に関するマニュアルの URL はこちら

2.5. Advanced

ここではプロパティを直接記述することが可能です。 Microsoft Docs で紹介されている RDP file settings の項目ですが、上記で紹介した以外にも様々な項目があり、それらを指定する場合に利用することになりそうです。

具体的には以下の設定項目を利用する場合にはこの Advanced から設定することになりそうです。

  • Device redirection
    • keyboardhook

なお、RDP file settings としては RemoteApp に関する設定項目が以下紹介されていますが、Windows Virtual Desktop では未サポートとのこと。

  • remoteapplicationcmdline
  • remoteapplicationexpandcmdline
  • remoteapplicationexpandworkingdir
  • remoteapplicationfile
  • remoteapplicationicon
  • remoteapplicationmode
  • remoteapplicationname
  • remoteapplicationprogram

上の RemoteApp やそれ以外の項目でも Windows Virtual Desktop でサポートしているかどうかはRDP file settings の表にサポート可否の列がありそこで確認することが可能です。

3. Download template

“Download template” で出来ることを確認してみます。 

“Download template” をクリックすると以下のようにリソースをテンプレートとして出力可能です。 まだ試していませんが、これで Host pool の設定をバックアップしたり、このテンプレートから Windows Virtual Desktop の環境をデプロイ出来るようです。

4. まとめ

6月の変更は若干退化(それまでは Azure Portal から GUI で設定出来た RDP properties がテキスト文字での入力に変わった)した感がありましたが、今回の変更は Windows Virtual Desktop を運用管理する上で大きな機能改善になったと考えます。

一通り RDP properties を確認しての気づきとしては Vide encoding や Compression など “RDP” のより詳細なプロトコルの仕様の把握も必要だということがあります。 イベントでの発表やホワイトペーパーなど “RDP” の詳細仕様がわかる資料を探してみることにします。 

あとは実際の運用を考えるとここで設定した内容がどのタイミングで ローカルデバイスの Windows Desktop クライアントに反映されるかを知る必要があります。 これまでの自分自身のテストの結果ではローカルデバイスの Windows Desktop クライアントでフィードを最新化する必要がありました。 管理者側で強制的に反映する方法を確立しないと Azure Portal で実施した設定変更が A さんの端末では反映し、 B さんの端末では未反映という状況が発生します。 実験は必要ですが、ローカルデバイスの Windows Desktop クライアントの起動時にフィードを最新化する処理を挟み込む、例えば起動用のバッチを作る、ことを考える必要がありそうです。

今回はここまでとします。