今回は、Windows Virtual Desktop (WVD) のホストプール作成時に使用するイメージ (Windows 10) を作成する方法について、自分の整理も兼ねて、まとめてみようと思います。
Windows Virtual Desktop (WVD)用イメージの作成手順
Azure 仮想マシン上に WVD用 Windows 10 の構築
1) Azure ポータルに接続し、「Virtual Machines」を選択します。
2) 「+ 追加」-「+ 仮想マシン」を選択します。
3) 「基本」-「すべてのパブリックおよびプライベート イメージを参照する」を選択します。
4) 「Microsoft Windows 10」-「選択」-「Windows 10 Enterprise multi-session, ...」のイメージを選択します。
※ Microsoft 365 をイメージに含める場合、「Windows 10 multi-session + Microsoft 365 Apps」からイメージを選択します。
5) 「ライセンス」:「Windows 10 コンプライアンスのマルチテナントをホストする権利を確認します」にチェック後、必要項目を入力し、仮想マシンをデプロイします。
WVD用 Windows 10 の日本語化
Azure ファイル共有 (FSLogix プロファイル 配置用) 作成
1) 今回は、FSLogix プロファイル (ユーザー プロファイル) を Azure ファイル共有に配置するため、 以下の URL を参照し、Azure ファイル共有を作成します。
※ 「Azure Storage アカウントを設定する」 参照
[参考情報]
Storage FSLogix プロファイル コンテナー Windows Virtual Desktop - Azure | Microsoft Docs
2) Azure ポータルから 1) で作成したファイル共有を選択します。
3) 「アクセス制御(IAM)」-「+ 追加」-「ロールの割り当ての追加」を選択します。
4) 「役割」: 「ストレージ ファイル データの SMB 共有の管理者特権の共同作成者」、「アクセスの割り当て先」:「ユーザー、グループ、または サービス プリンシパル」を選択し、WVDにログインするユーザー、グループを選択後、「保存」を選択します。
FSLogix インストール/設定
FSLoigix は、WVD接続ユーザーのユーザープロファイル情報を管理する機能(ユーザープロファイルをVHD/VHDX形式でAzure Blob/Files、Microsoft 365上などに配置)が備わっており、以下のような機能を使用することが可能になっています。
- Profile Containers : 複数のファイルサーバーなどを指定可能。※ 複数のファイルサーバーを指定した場合、Active/Standby構成になり、Active 側にのみユーザープロファイル情報が更新されるため、Standby側にActive側に保存されたユーザープロファイルを同期する仕組みを別途検討する必要がある。
- Cloud Cache : ファイル サーバーとAzure Blobなどを併用し、Active/Active構成を実現可能。※ VHD/VHDX形式のユーザープロファイルをマウントする際にキャッシュ データが読み込まれるため、ログオン/ログオフのパフォーマンスが低下する可能性あり。
- Office Containers : Outlook/OneNote/OneDrive などを使用
- Application Masking : WVDイメージにインストールしたアプリケーション (Excel/Word など) を、管理者が指定したユーザーにのみ使用を制限することが可能
- Java Version Control : ブラウザなどで各種アプリケーションなどに使用される Javaのバージョンを制御することが可能
今回は、「エンタープライズ向けの FSLogix - Azure Architecture Guide 」で推奨されている Profile Containers (Azure Files) を使用することにします。
1) WVD用 Windows 10 仮想マシンに リモート デスクトップ (RDP) で接続し、管理者アカウントでログインします。
2) 「https://aka.ms/fslogix_download」から FSLogix をダウンロード(zip)後、任意のパスに展開します。
3) エクスプローラから 2) で展開したパスに移動し、「fslogix.adml」、「fslogix.admx」ファイルを以下のようにコピーします。
- 「fslogix.adml」:「C:\Windows\PolicyDefinitions\ja-JP」(OS 日本語化済みの場合) へコピー
- 「fslogix.admx」:「C:\Windows\PolicyDefinitions」へコピー
4) 「ここに入力して検索」:「gpedit.msc」と入力し、「グループ ポリシーの編集」を選択します。
5) 「管理用テンプレート」-「FSLogix」-「Profile Containers」を選択し、以下のようにポリシーを変更します。
- Enabled : 有効
- VHD location : 有効
※ VHD location には、作成した Azure ファイル共有のURL (今回の場合、「\\**.file.core.windows.net\profiles」) を入力します。
6) エクスプローラから 2) で展開したパス -「x64」-「Release」へ移動し、「FSLogixAppsSetup」を実行します。
7) 「I agree to the license terms and conditions」にチェック後、「install」を選択し、正常にインストールされたことを確認後、「Close」を選択します。
8) Azure ポータル から 作成した Azure ファイル共有 を選択後、「接続」を選択します。
9) 「Windows」-「認証方法」:「ストレージ アカウント キー」を選択し、表示されたコマンドをコピーして控えます。
10) WVD用 Windows 10 仮想マシンに戻り、PowerShell を管理者として起動します。
11) 9) でコピーしたコマンドを実行し、ネットワーク ドライブの割り当てが正常に行わえたことを確認します。
[補足]
WVD ユーザーが自身のユーザー プロファイル コンテナの作成を許可、かつ、作成者のみが作成したユーザー プロファイル コンテナへのアクセスを許可させる場合には、以下のコマンドを実行し、アクセス権限を変更します。
icacls <ドライブレター>: /grant <ユーザー(グループ) アカウント e-mail>:(M) icacls <ドライブレター>: /grant "Creator Owner":(OI)(CI)(IO)(M) icacls <ドライブレター>: /remove "Authenticated Users" icacls <ドライブレター>: /remove "Builtin\Users" |
[参考情報]
Install FSLogix Agent - FSLogix | Microsoft Docs
Profile Container registry configuration settings - FSLogix | Microsoft Docs
Azure Files Active Directory Domain Services を使用した FSLogix プロファイル コンテナーの作成 - Azure | Microsoft Docs
OS 設定変更
1) WVD用 Windows 10 仮想マシンに リモート デスクトップ (RDP) で接続し、管理者アカウントでログインします。
2) 以下の URL を参照し、各種設定を変更します。
- Windows Defender を構成する
- 自動更新を無効にする
- Windows 10 PC のスタート画面のレイアウトを指定する (省略可能)
- タイム ゾーン リダイレクトを設定する
- ストレージ センサーを無効にする
[参考情報]
Windows Server 2016 または2019で Microsoft Defender ウイルス対策の除外を構成する - Windows security | Microsoft Docs
3) 以下 リモート デスクトップ (RDP) 関連の設定を変更します。
- RemoteAppLogoffTimeLimit:RemoteApp Client終了後から自動ログオフまでの時間を設定 (ミリ秒)
- fResetBroken:
有効 (1):タイムアウトの時間に達したセッションをすべて終了 (ログオフ)
無効 (0):タイムアウトしたセッションは、リモート デスクトップ サービスによって常に切断
- MaxConnectionTime (ミリ秒):RDP接続可能時間を設定。閾値を超えた場合、ログオフが行われる。
- MaxDisconnectionTime (ミリ秒):RDP接続の切断後から、自動ログオフまでの時間を設定。
- MaxIdleTime (ミリ秒):最大アイドルタイムアウト時間を設定。閾値を超えた場合、ログオフが行われる。
# コマンド実行例 (PowerShell (管理者権限) から実行。設定値は要件に応じて変更)
reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v RemoteAppLogoffTimeLimit /t REG_DWORD /d 0 /f reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v MaxConnectionTime /t REG_DWORD /d 10800000 /f reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v MaxDisconnectionTime /t REG_DWORD /d 5000 /f reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v MaxIdleTime /t REG_DWORD /d 7200000 /f |
※ 必要に応じて、ドメインのグループポリシーで設定することも可能。
[参考情報]
Azure VM でリモート デスクトップの接続が頻繁に切れる - Azure Virtual Machines | Microsoft Docs
イメージ作成手順
1) WVD用 Windows 10 仮想マシンに リモート デスクトップ (RDP) で接続し、管理者アカウントでログインします。
2) 管理者としてコマンドプロンプトを起動し、「%windir%\system32\sysprep」へパスを移動後、「sysprep.exe」を実行します。
3) 「システム準備ツール」を以下のように設定後、「OK」を選択します。
※ sysprep 処理が実行された後、WVD用 Windows 10 仮想マシンがシャットダウンされます。
- システム クリーンアップ アクション : 「システムの OOBE (Out-of-Box Experience) に入る」
- 「一般化する」にチェック
- シャットダウン オプション : 「シャットダウン」
[補足]
私が sysprep 処理を実施した場合、「C:\Windows\System32\Sysprep\Panther\setuperr.txt」に以下のエラーが出力され、sysprep 処理に失敗してしまいました。
SYSPRP Package Microsoft.LanguageExperiencePackja-JP_19041.12.28.0_neutral__8wekyb3d8bbwe was installed for a user, but not provisioned for all users. This package will not function properly in the sysprep image. |
エラー内容としては、「Microsoft.LanguageExperiencePackja-JP_19041.12.28.0_neutral__8wekyb3d8bbw」がインストールされているため、sysprep処理ができないというものでした。
そのため、PowerShell から該当のパッケージが存在していることを確認後、該当のパッケージの削除を実施しました。
>Import-Module Appx >Import-Module Dism >Get-AppxPackage -AllUser | Select-String -Pattern "Microsoft.LanguageExperiencePackja-JP_19041.12.28.0" Microsoft.LanguageExperiencePackja-JP_19041.12.28.0_neutral__8wekyb3d8bbwe Microsoft.LanguageExperiencePackja-JP_19041.12.28.0_neutral__8wekyb3d8bbwe >Remove-AppxPackage -Package Microsoft.LanguageExperiencePackja-JP_19041.12.28.0_neutral__8wekyb3d8bbwe |
Microsoft.LanguageExperiencePack は、以下のパッケージのようなので、削除しても問題ないと判断しています。
4) Azure ポータルに移動して、sysprep 処理を実行した WVD用 Window 10 仮想マシンを選択します。
5) 「概要」-「キャプチャ」を選択します。
6) 必要項目を入力後、「確認および作成」を選択します。
7) 内容が正しいことを確認後、「作成」を選択します。
まとめ
今回は、Windows Virtual Desktop (WVD) のホストプール作成時に使用するイメージ (Windows 10) を作成する方法についてまとめてみました。
RDP接続のネットワーク帯域を軽減するチューニング項目が、今回の手順の中には含まれていないため、別途 まとめてみようと思います。
※ 今回の手順は、【保存版】Windows Virtual Desktop (WVD) 構築手順 (検証環境) に含まれています。
1. Windows Virtual Desktop (WVD) のメリット
2. Windows Virtual Desktop (WVD) 構築
・事前準備
・Azure 無償/有償 サブスクリプション
・Microsoft 365 無償/有償 サブスクリプション
・Azure Active Directory カスタムドメイン設定
・構築
・Azure AD Connect 同期設定
・Azure AD Domain Services 構築
・Windows Virtual Desktop (WVD) 用イメージの作成手順
・Windows Virtual Desktop (WVD) ホストプール作成手順
・デスク トップ アプリケーション グループへ接続ユーザーの登録
・Windows Virtual Desktop (WVD) 接続手順
3. まとめ