Windows Virtual Desktop #4 OS イメージの初期状態

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

Gallery から展開したWindows 10 Enterprise の初期状態について確認した結果を紹介します。

1. OS イメージ

今回展開しているOSは”Windows 10 Enterprise for Virtual Desktops, Version 1909 + Office 365 ProPlus”になります。

ここからは実際に展開したAzure 上の仮想のWindows 10 についてスクリーンショットを交えながら紹介していきます。

1.1. Windows Settings > System > About

Windows specifications セクションでEdition やVersionを確認することが可能です。”Windows 10 Enterprise for Virtual Desktops”とあるように”for Virtual Desktops”と明記されているからには付与されていないEnterprise Edition とは何かしら違いがあるのかもしれません。

1.2. systeminfo コマンドの実行結果

systeminfo コマンドの実行結果です。 ポイントをハイライトします。

OSはGUI と同様に”Windows 10 Enterprise for Virtual Desktops”です。

言語系がen-us なのはFall 2019 と変わらず。これはWindows Virtual Desktop の仕様というよりはAzure のマーケットプレイスで提供されているOSイメージの仕様です。 日本国内で利用する際には変更して使う人がほとんどになると思います。

あとTime Zone がUTC になっています。 ここもご利用の地域に応じて変更することになるでしょう。 グローバルに利用する場合はログオンスクリプトなどで変更するなど利用者の居る場所に応じて変更した方が利用者にやさしいかもしれません。 VMware Horizon なんかはローカル端末側のTime Zone を自動的に仮想OSに反映する機能が標準で提供されていますがWindows Virtual Desktop にそのような機能があるかは不明。現時点で言えるのは標準ではローカル端末側のTime Zone を自動的に仮想のWindows 10 に反映はされません

あと、この仮想マシンはActive Directory ドメインに参加しています。PDC エミュレーターのFSMO の役割をもつドメインコントローラの時刻と自動的に同期します。 今回の環境ではドメインコントローラは Azure AD Domain Services を利用しています。

C:\Users\wvdadmin>systeminfo
Host Name: B4ms-0
OS Name: Microsoft Windows 10 Enterprise for Virtual Desktops
OS Version: 10.0.18363 N/A Build 18363
OS Manufacturer: Microsoft Corporation
OS Configuration: Member Server
OS Build Type: Multiprocessor Free
Registered Owner: N/A
Registered Organization: N/A
Product ID: 00432-70000-00001-AA475
Original Install Date: 5/7/2020, 10:17:41 AM
System Boot Time: 5/7/2020, 10:19:06 AM
System Manufacturer: Microsoft Corporation
System Model: Virtual Machine
System Type: x64-based PC
Processor(s): 1 Processor(s) Installed.
[01]: Intel64 Family 6 Model 85 Stepping 4 GenuineIntel ~2095 Mhz
BIOS Version: American Megatrends Inc. 090007 , 6/2/2017
Windows Directory: C:\windows
System Directory: C:\windows\system32
Boot Device: \Device\HarddiskVolume1
System Locale: en-us;English (United States)
Input Locale: en-us;English (United States)

Time Zone: (UTC) Coordinated Universal Time
Total Physical Memory: 16,384 MB
Available Physical Memory: 13,928 MB
Virtual Memory: Max Size: 19,328 MB
Virtual Memory: Available: 16,966 MB
Virtual Memory: In Use: 2,362 MB
Page File Location(s): D:\pagefile.sys
Domain: m.bigriver.jp
Logon Server: \MWO7THDJCO57D-0
Hotfix(s): 5 Hotfix(s) Installed.
[01]: KB4532938
[02]: KB4517245
[03]: KB4537759
[04]: KB4552152
[05]: KB4549951
Network Card(s): 1 NIC(s) Installed.
[01]: Microsoft Hyper-V Network Adapter
Connection Name: Ethernet 2
DHCP Enabled: Yes
DHCP Server: 168.63.129.16
IP address(es)
[01]: 10.0.0.6
[02]: fe80::7916:bc22:e384:f8e2
Hyper-V Requirements: A hypervisor has been detected. Features required for Hyper-V will not be displayed.

1.3. ライセンス認証

slmgr.vbs コマンドでOSライセンスの状態を確認します。

“VOLUME_KMSCLIENT channel” からわかるようにKMS 認証を利用しています。 KMS Server は”kms.core.windows.net:1688″、IPアドレスは”23.102.135.246″とAzure で共通のものです。

Expressroute などで強制トンネリングを利用している環境では公式ドキュメント「強制トンネリングを使用したライセンス認証の問題」を参考にカスタムルートを構成することになると思います。

2. OS の設定 / 構成

次にOS の設定や構成を見ていきます。

2.1. 環境変数

まずは環境変数。 ポイントをハイライトします。

まず”CLIENTNAME”でローカル端末のコンピュータ名が取得できます。 企業利用などで接続端末を限定できる環境であればこの環境変数とログオンスクリプトを使えば色々出来そうです。 特定の端末にプリンタを登録する、先頭2文字でグループを判定しレジストリを変更する等なんでもできそうです。

”DATACENTER” にリージョン情報があります。これを使えば上で書いたUTCの自動変更のスクリプトを実行することも出来そうですね。

“LOGONSERVER”ではサインインで使用したドメインコントローラのコンピュータ名を確認できます。 トラブルシューティング目的でどのドメインコントローラにサインインしているかを記録する処理をログオンスクリプトで実行するときによく使う環境変数です。 “echo %LOGONSERVER% > c:\temp\logonserver.txt” などを実行しておくだけでトラブルシューティングが大分楽になります。 あとは前後に時刻情報を出力する、別途ファイル共有に吐き出すなどすればほとんどのケースに対応できると思います。

”MONITORING~” はAzure 特有の情報が入っています。今すぐ何かに使えそうなものはないですが何百台、数千台ある環境ではこの情報を残しておくことでAzure 側での障害発生時に障害範囲の特定などに役立ちそうです。

“SESSIONNAME” もWindows Virtual Desktop の情報のようです。この情報もログオン記録として時間などと一緒に残しておくと識別子として使えそうです。

”USER~”はオンプレのVDI でもよく見ている環境変数でどのドメインにどのユーザの情報でサインしてどのプロファイルを使っているかなど確認出来ます。

C:\Users\wvdadmin>set
ALLUSERSPROFILE=C:\ProgramData
APPDATA=C:\Users\wvdadmin\AppData\Roaming
CLIENTNAME=XXXXXX-PC
CommonProgramFiles=C:\Program Files\Common Files
CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files
CommonProgramW6432=C:\Program Files\Common Files
COMPUTERNAME=B4ms-0
ComSpec=C:\windows\system32\cmd.exe
DATACENTER=japaneast
DriverData=C:\Windows\System32\Drivers\DriverData
HOMEDRIVE=C:
HOMEPATH=\Users\wvdadmin
LOCALAPPDATA=C:\Users\wvdadmin\AppData\Local
LOGONSERVER=\MWO7THDJCO57D-0
MONITORING_AGENT_CLUSTER=WUS2R0C100
MONITORING_AGENT_RING=R0
MONITORING_CONFIG_VERSION=1.5
MONITORING_DATA_DIRECTORY=C:\windows\system32\config\systemprofile\AppData\Roaming\Microsoft\Monitoring
MONITORING_ENV=PROD
MONITORING_GCS_ACCOUNT=RDSAgentProd
MONITORING_GCS_AUTH_ID=RDSAgentPROD.geneva.keyvault.RDSAGENT.WVD
MONITORING_GCS_AUTH_ID_TYPE=AuthKeyVault
MONITORING_GCS_CERTSTORE=LOCAL_MACHINE\MY
MONITORING_GCS_ENVIRONMENT=Diagnostics Prod
MONITORING_GCS_NAMESPACE=RDSAgentProd
MONITORING_GCS_REGION=japaneast
MONITORING_MDM_ACCOUNT=RDSAgentProd
MONITORING_RESOURCE=202004
MONITORING_ROLE=bigriver20200507
MONITORING_ROLE_INSTANCE=B4ms-0.m.bigriver.jp
MONITORING_TENANT=PROD

NUMBER_OF_PROCESSORS=4
OneDrive=C:\Users\wvdadmin\OneDrive
OS=Windows_NT
Path=C:\windows\system32;C:\windows;C:\windows\System32\Wbem;C:\windows\System32\WindowsPowerShell\v1.0\;C:\windows\System32\OpenSSH\;C:\Users\wvdadmin\AppData\Local\Microsoft\WindowsApps;
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
PROCESSOR_ARCHITECTURE=AMD64
PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 85 Stepping 4, GenuineIntel
PROCESSOR_LEVEL=6
PROCESSOR_REVISION=5504
ProgramData=C:\ProgramData
ProgramFiles=C:\Program Files
ProgramFiles(x86)=C:\Program Files (x86)
ProgramW6432=C:\Program Files
PROMPT=$P$G
PSModulePath=C:\Program Files\WindowsPowerShell\Modules;C:\windows\system32\WindowsPowerShell\v1.0\Modules
PUBLIC=C:\Users\Public
SESSIONNAME=rdp-sxs200326004#4
SystemDrive=C:
SystemRoot=C:\windows
TEMP=C:\Users\wvdadmin\AppData\Local\Temp
TMP=C:\Users\wvdadmin\AppData\Local\Temp
USERDNSDOMAIN=M.BIGRIVER.JP
USERDOMAIN=M
USERDOMAIN_ROAMINGPROFILE=M
USERNAME=wvdadmin
USERPROFILE=C:\Users\wvdadmin

windir=C:\windows

上記の環境変数ですがどこで設定されているものなのか確認します。

コントロールパネルからSystem Properties > Environment Variables を確認します。 ”MONITORING~”は システムの環境変数ですが”CLIENTNAME”や”SESSIONNAME”のWindows Virtual Desktop 特有の環境変数はシステム環境変数には含まれてはいません。

2.2. ディスク構成

Disk Management からディスクの構成情報を確認します。

C: ドライブは128GB のPage BLOB です。 

E: ドライブにDVD があります。 どうやって使うのだろうか。使ってみようとしたことも使ったこともなかったのですぐに出てきません。

WVD の展開する際、ディスクの種類は選択出来たのですがサイズの情報はなく展開後に確認しようと考えていました。 以下はAzure Portal でのHosts pool 作成時の画面ですが、”os disk type”を選ぶことは出来ますがサイズに関する指定は見当たりません。

2.3. ネットワーク構成

ipconfig /all で構成情報を確認します。

Fall 2019 と変わらずAzure 上の仮想マシンは基本的にDHCP によるIPアドレス構成となります。DHCP Server のIPアドレスとして 168.63.129.16 が設定されていますがこちらはブロックしないよう気を付ける必要があります。

しかし、Lease Expires 見てちょっとびっくり、Azure のDHCP では136年もリース期間が設定されています。 仮に仮想マシンが停止することなかったとして次のリース更新が68年後ですね。

C:\Users\wvdadmin>ipconfig /all
Windows IP Configuration

Host Name . . . . . . . . . . . . : B4ms-0
Primary Dns Suffix . . . . . . . : m.bigriver.jp
Node Type . . . . . . . . . . . . : Hybrid
IP Routing Enabled. . . . . . . . : No
WINS Proxy Enabled. . . . . . . . : No
DNS Suffix Search List. . . . . . : m.bigriver.jp
reddog.microsoft.com

Ethernet adapter Ethernet 2:

Connection-specific DNS Suffix . : reddog.microsoft.com
Description . . . . . . . . . . . : Microsoft Hyper-V Network Adapter #2
Physical Address. . . . . . . . . : 00-0D-3A-CC-F3-93
DHCP Enabled. . . . . . . . . . . : Yes
Autoconfiguration Enabled . . . . : Yes
Link-local IPv6 Address . . . . . : fe80::7916:bc22:e384:f8e2%4(Preferred)
IPv4 Address. . . . . . . . . . . : 10.0.0.6(Preferred)
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Lease Obtained. . . . . . . . . . : Thursday, May 7, 2020 10:19:13 AM
Lease Expires . . . . . . . . . . : Sunday, June 13, 2156 10:50:16 PM
Default Gateway . . . . . . . . . : 10.0.0.1
DHCP Server . . . . . . . . . . . : 168.63.129.16
DHCPv6 IAID . . . . . . . . . . . : 117443898
DHCPv6 Client DUID. . . . . . . . : 00-01-00-01-26-45-36-07-00-15-5D-72-02-0B
DNS Servers . . . . . . . . . . . : 10.0.0.4
10.0.0.5
NetBIOS over Tcpip. . . . . . . . : Enabled

2.4. Windows Update

ちょうど適用できるパッチがあるので試しに適用してみます。

2つのパッチ適用時のPerformance Monitor のスクリーンショットは以下です。 4つのvCPU の1つをまるまる使っている感じです。 Network はほとんど使っていないです。すでにダウンロードまで終わっていたからですかね。

適用が完了し、OS再起動が求められています。とりあえず再起動しておきます。

再起動、その後のWindows Virtual Desktop への再接続も特に問題なく行えました。

なお、Delivery Optimization (配信の最適化)が有効です。 以下の設定の場合同じVNET上のWindows 10 とダウンロードキャッシュをPeer to Peer 通信で共有します。 Microsoft Update サイトとの通信量を6-7割程度削減出来ます。 逆に言うと3割程度は通信は発生しますし、Windows 10 同士で勝手に通信しあいますし、そのためのCPUやディスクリソースも消費することに注意は必要です。 

さらにDelivery Optimization はいろいろなモードがあるのですがほとんどのモードでは管理機能はMicrosoft 上のサーバで実施されます。 先ほどPeer to Peer と言いましたがそのPeer to Peer 通信を始める前にこのサーバとインターネットを介して通信します。 

Delivery Optimization は昔からあるBranch Cache と一緒にがっつり検証したことがあるのですが記事を何本もかけるくらい奥が深いです。この辺にしておきますが詳しくは公式ドキュメントを確認してください。

2.5. アプリケーション

Marketplace から展開した直後のインストール構成は次の通りです。

以下の5つがWindows Virtual Desktop 特有のアプリケーションと思われます。

  • Remote Desktop Agent Boot Loader
  • Remote Desktop Services Infrastructure Agent
  • Remote Desktop Services Infrastructure Agent
  • Remote Desktop Services Infrastructure Geneva Agent 43.3.4
  • Remote Desktop Services SxS Network Stack

Office は以下2つでTeams クライアントはありません(ユーザーモードでインストールできるからマスタにはいらないということか)。 Skype はありますが。

  • Microsoft Office 365 ProPlus – en-us
  • Microsoft OneDrive

Optional Features は以下の通りです。 

Internet Explorer 11 を削除できるようです。

Windows Media Player など一時期無くなったと思ったらまだあったんですね。

OpenSSH もこのOptional にあることがわかりました。 ちょっと使ってみます。 普通に使えますね。

3. まとめ

Fall 2019 との違いはちゃんと比較していないので今回はあまり触れていません。 Spring 2020 を実環境での利用を考えた際に見るべきところを見ていきました。 そんな中でも気になったのは以下です。

  • ”Windows 10 Enterprise for Virtual Desktops” は他のEnterprise と何が違うのか?(引き続き確認する必要がある)
  • 言語とTime Zone は変更する方法を考える必要がある
  • 環境変数ではログオンスクリプトで使えそうな変数が結構ある
  • Marketplace イメージを利用する場合はディスクは128GB固定(自分でイメージをカスタマイズすればいけそう)

以上