この記事のWVDは”Windows Virtual Desktop Spring 2020 Release”が対象です。
前回の記事ではWindows Virtual Desktop における2つの画面転送方式(RemoteAppとDesktop)についてWindows 10 への接続を紹介しました。 今回の記事では仮想マシンのOS をWindows Server 2019 に変えてテストしその内容を紹介していきます。
テスト環境の構成は以下の通りです。Windows Virtual Desktop 上の仮想のWindows Server 2019 のイメージを利用し、RemoteApp と Desktop の2つの画面転送方式を紹介していきます。

今回はServer OS を利用しているということでTeams による音声、動画像のリダイレクションの確認も追加で実施していきます。
目次
1. 事前準備
1.1. UI の日本語化
Marketplace の Windows Server 2019 の既定のUI はen-us です。 今回は Japanese に変えてしまいます。
Windows Settings > Time & Language から

日本語の構成に進み

各コンポーネントをダウンロードします。

ダウンロードとインストール中の画面。

インストールが完了しました。

あとはキーボードのレイアウトも変えます。 既定は English Keyboard です。

“Change layout” から “Japanese keyboard (106/109 key) に変更します。

1つ前の画面に戻り “Windows display languages” から 日本語を指定します。

一度サインアウトし、サインインします。 日本語化されました。 画面は省略しますがキーボードレイアウトも日本語キーボードになりました。

あとは他のユーザの言語の変えたい場合は以下の”ようこそ画面と新しいユーザーアカウント”を設定しましょう。

変更前は以下。

コピー先にチェックします。

変更の反映には再起動が必要です。 タイミングを見て再起動しましょう。

1.2. Microsoft Teams のインストール
今回は Media Optimization for Microsoft Teams を最初から有効にしていきます。 公式マニュアルはこちら。 基本的にマニュアル通り進めればOKです。
レジストリでキーを追加します。

WebRTC をインストールします。

失敗するので、マニュアルにあるC++ のライブラリをインストールします。

ライブラリをインストールし

WebRTC のインストールを再度実行します。

インストールが完了しました。

次はTeams のインストールです。 モジュールを こちら からダウンロードし、CUI からインストールします。
msiexec /i “Teams_windows_x64.msi” /l*v teams.log ALLUSER=1 ALLUSERS=1 |
Teams アプリからプロファイル>情報>バージョンを実行します。 画面上に”WVD Media は最適化されています” と表示されていれば問題ありません。

プロファイル>設定>デバイスを実行します。 スピーカーとマイクに物理デバイスが認識されていること、カメラも動作していることを確認できました。 Windows Server 2019 でもMedia Optimization for Microsoft Teams は問題なく動作することが確認できました。

1.3. Microsoft Edge のインストール
今時Internet Explore をテストしても仕方がないのでMicrosoft Edge をインストールします。(とはいいつつ業務システムの都合からInternet Explore を使い続けたい、その為のVDI を用いることは多いのですが)

1.4. RemoteApp の登録
Windows Server 2019 にインストールした Teams と Edge を登録します。
アプリケーショングループの 管理 > アプリケーション に移動します。”追加”からアプリケーションの追加の画面を開きます。

”Microsoft Teams” を追加します。

同じように”Microsoft Edge” も追加します。

2つのアプリケーションが追加されました。

これで事前準備は完了です。
2. RemoteApp の利用イメージ
2.1. リモートデスクトップクライアントの起動
まずは手元の物理PCでリモートデスクトップクライアントを起動します。

リモートデスクトップクライアントが起動します。

テストアカウントに割り当てたWorkspace は2つがありますが、下側の”Windows Server Workspace” がゲストOSにWindows Server 2019 を利用した環境です。今回はこちらを紹介していきます。

以下のアイコンは”Desktop” のアプリケーショングループです。

“RemoteApp” は以下のようにアプリケーションがアイコンで表示されます。

2.2. System Information の起動
さっそく起動していきます。 まずは”System Information”です。
アイコンをクリックします。 “アプリの開始中” となり接続が開始されます。

資格情報を入力します。

接続を待ちます。

システム情報が起動します。同時に”Microsoft Teams” のウィンドウも起動してきました????

このTeams がローカルPCのものかどうかまずは切り分けます。 ローカルPCでタスクマネージャを起動します。 ローカルPCのTeams のプロセスをすべて終了します。

ローカルPC側ではTeams は起動していない状態です。しかし、右側のTeams のウィンドウは残ったままです。 動きから察するに、ユーザがサインイン時に自動起動するアプリケーション、今回はTeams 、も一緒に画面転送されてくるということです。 まあ、それはそうな気もしますが仕様がわかれば幾らでも対処は出来るレベルです。

もともと確認したかったRemoteAppによる”System information” の確認に戻ります。
Windows Virtual Desktop で提供される仮想のWindows Server 2019 で起動した”システム情報”のウィンドウがローカルPCに表示されます。 グレーの背景がローカルPCです。
OS名は “Microsoft Windows Server 2019 Datacenter” です。

2.3. Resource Monitor の起動
次は”Resource Monitor” を起動します。 特に問題はありません。

2.4. Microsoft Edge の起動
次はEdge です。 こちらも特に問題なく起動します。

送信元IPアドレスを確認する為に APNIC のサイトにアクセスします。
IPアドレスは “20.43.86.95” であることが確認出来ます。 このIPアドレスをクリックします。

Microsoft が管理するIPアドレスであることが確認出来ました。

RemoteApp のEdge の中でYoutube で動画を見ます。 音声、動画も視聴には全く問題ありません。 ローカルPCのリソースはCPUが10%弱、ネットワークは1~2Mbps というところです。

負荷をかけるためにEdge のウィンドウサイズを拡げます。 グレーの背景がローカルPCとなり解像度は2560×1440 です。Edge の中のYoutube の領域も相応な大きさになりました。

ローカルPCのCPUは20% (3.7GHzの物理コアを4つ搭載しているのでざっくりと1コア分)、ネットワークは15Mbps位の帯域幅です。

2.5. Microsoft Teams の起動
次はMicrosoft Teams の起動なのですが、一番最初のSystem Information の起動の時にTeams が同時に起動することがわかっています。
さらにこのRemoteApp のTeams は終了できません。 Teams のウィンドウで終了してもタスクバーに残ったままです。何度終了しても終了出来ません。

この問題はとりあえず放置して、Teams の確認に進みます。
グレーの背景がローカルPCで、Teams はWindows Virtual Desktop のRemoteApp です。

Windows Server 2019 およびRemoteApp でもTeams の最適化は利用可能です。

デバイスの認識も問題ありません。 Teams 通話なども問題なく実施出来ました。

3. Desktop の利用イメージ
次はWindows 2019 のフル機能を利用出来る”Desktop” の利用イメージです。
“Desktop” のアイコンをダブルクリックします。

エラーが発生です。 前回のWindows 10 編と同じエラーですかな。

前回の経験では二重ログインが起因する可能性が高いことはわかっています。
セッションホストには テストユーザがサインイン状態です。 さっきまでのRemoteApp のテストで起動したアプリケーションはすべて終了したのですがTeams だけはどうしても停止出来ないためです。

”すべてのアクティブなユーザをログオフする”を実行し、強制的にサインアウトします。

実行直後に以下のウィンドウが開きます。

ポップアップを拡大したものが以下になります。 メッセージの中身はその通りな内容です。

このタイミングで停止出来なかった RemoteApp のTeams が終了しました。やはり最初にSystem Informationを起動した際に同時に起動されたTeams のセッションが残っていたようです。
もういちどDesktop を起動します。 今回は問題なく資格情報の入力画面が表示されました。

Windows Server 2019 に無事サインインすることが出来ました。 しかし、サーバーマネージャとTeams が自動起動しています。 これは止めたいですね。

まずはサーバーマネージャの自動起動の停止。これは Windows Virtual Desktop で利用しているActive Directory でグループポリシーを設定することにします。
[コンピューターの構成]-[ポリシー]-[管理用テンプレート]-[システム]-[サーバー マネージャー]にある「ログオン時にサーバー マネージャーを自動的に表示しない」を有効にします。
以下のスクリーンショットではUI がen-us です。

次はTeams の自動起動の無効化です。
設定からスタートアップにある Microsoft Teams についてオンからオフに変更します。

一度セッションホストを再起動(gpupdateコマンドの実行 及びサインアウト・サインインでもよいかとは思います)し、再度接続します。
サーバマネージャもTeams も自動起動してきません。 成功です。

他のアカウントでも同様の動作となるかも確認します。 別のアカウントでもサーバマネージャの自動起動とTeams の自動起動が無効となったこと確認出来ました。

Edge を起動し、APNIC のサイトにアクセスします。 送信元IPは20.43.86.95 とAzure のIPアドレスです。

Teams はデスクトップのショートカットから手動で起動します。
最適化は有効です。

スピーカー、マイク、カメラなどのデバイスの認識も問題ありません。

Teams の自動起動を停止したこの状態であれば、一番最初にSystem Information を起動した際に発生したTeams も一緒に起動される問題および自動起動したTeams を停止出来ない問題が解消されているかもしれません。 確認します。
起動しないものをスクリーンショットでお伝えしても仕方がないので文字だけで説明します。 問題は解消されました。 System Information や他のアプリケーションを RemoteApp から起動してもTeams が自動起動されることはなくなりました。 もちろん、Teams 単体をRemoteAppから起動することも可能です。
なお、Desktop に接続している状態ではRemoteApp は併用出来ないこともわかりました。 RemoteApp のアイコンをクリックしてもローカルPCで起動することはありませんでした。 ちなみにDesktop が起動状態でRemoteApp を起動しようとした際に特にエラー等のメッセージは表示されず、ただ起動しないだけです。 この後Desktopのセッションを終了(サインアウト)すると、そのタイミングでたまっていたRemoteApp が順番に起動していきます。
4. まとめ
今回の検証で得られたノウハウは以下の通りです。
- Windows Server 2019 のRemoteApp および Desktop の基本動作を確認
- Windows 10 同様、同じマシン上に二重ログインとなってしましRemoteAppやDesktop が利用出来ないことがある。 防止策はまだ見つかっていないが、解消するには残っているセッションを強制的に終了する
- Teams について既定の自動起動のままではRemoteApp でTeams 以外のアプリケーションを起動した際にTeams も起動し、また、終了できなくなる(二重ログインにもつながる可能性あり)。 Windows 10 のスターとアップ設定でTeams のスタートアップを無効化する
- Server OS をデスクトップとして利用する場合、エンドユーザ向けに余計な機能は見せないようにした方がよい。例えばサーバーマネージャなど。 サーバーマネージャはグループポリシーから自動起動を無効化できる。
- Desktop に接続中はRemoteApp を同時に利用することは出来ない。 Desktopのセッションを終了すると保留されていたRemoteAppが順番に起動される
RemoteApp は長い歴史をもつCitrix のレベルにはまだまだ追いついていないことは実感としてありますが、特定のアプリケーション1つ2つに絞る、インターネット分離(Webブラウザ)に限定するなど用途を限定すれば十分実運用に耐えられそうな感触はあります。 管理プレーンが無償で維持管理の運用の不要というメリットはかなり大きいのでWindows Virtual Desktop が品質面でも機能面でもどんどん向上していってくれればいいなと思いました。
今回はここまでとします。