Azure Virtual Desktop 用のマスターイメージを作成してみる!

Azure Virtual Desktop 用のマスターイメージ作成にあたり、最低限やっておきたい事を記載したい思います。

マスターイメージの作成が、とても簡単になりました!
AVD カスタム イメージ テンプレートを試す!


全体の流れ

Step1:Windows 10 日本語化とタイムゾーンの変更 + Windows Update
Step2:FSLogixのインストール
Step3:RDP系レジストリ設定
Step4:デスクトップ系レジストリ設定
Step5:Microsoft 365 Appsインストール
Step6:初期化とイメージ化

マスターイメージ用として、MarketplaceからWindows 10 Multi-session VMを作成
[Windows 10 Enterprise for Virtual Desktops Preview, Version 1909]
※以下手順は、すべてこのVM上にて実施

Office+Teamsインストール済みのVMもある
[Microsoft Windows 10 + Microsoft 365 Apps]

※マスターイメージでの「Cドライブのサイズ変更」「追加ディスク」も反映されます。


Step1:Windows 10 日本語化とタイムゾーンの変更

最後に[Windows Update]を実施

【タイムゾーンのリダイレクト】
コマンドプロンプト(管理者権限)
tzutil /s “Tokyo Standard Time

【キーボードレイアウトの変更】

【Host Poolの作成に失敗する場合】


Step2:FSLogixのインストール

FSLogixには、プロファイルに関する機能として[Office Container][Profile Container][Cloud Cache]の3つがあります。
基本的には「Profile Container」で検討し、出張などで複数のリージョンを行き来する場合や保存先として[Blob]を利用したい場合は、「Cloud Cache」を選択して下さい。

※機能詳細については
ユーザープロファイル問題を解決する「FSLogix」とは?
FSLogix Profile Container と Office Container を設定してみる!

FSLogixをダウンロード

FSLogixAppsJavaRuleEditorSetup.exe = Java Redirection
FSLogixAppsRuleEditorSetup.exe = App Masking
FSLogixAppsSetup.exe = Profile Container / Office 365 Container / Cloud Cache

【GPO設定の準備】
[fslogix.adml]を「C:\Windows\PolicyDefinitions\en-US」にコピー
[fslogix.admx]を「C:\Windows\PolicyDefinitions」にコピー

ファイル名を指定して実行[gpedit.msc]

【Profile Containers】の設定 ※推奨

[Enabled][Delete local profile when FSLogix Profile should apply]を有効化

[VHD Location]にプロファイルの保存先を記載
例:優先度1=ファイルサーバー(Active)、優先度2=ファイルサーバー(Passive)
\\10.0.0.4\Share01;\\10.0.0.4\Share02;

【Cloud Cache】の設定

[Enabled][Delete local profile when FSLogix Profile should apply]を有効化

[Clear local cache on logoff]を有効化
[Cloud Cache Locations]にプロファイルの保存先を記載

例:優先度1=ファイルサーバー(Active)、優先度2=Page Blob(Active)
type=smb,connectionString=\\10.0.0.4\ProCon;type=azure,connectionString=
“DefaultEndpointsProtocol=https;AccountName=userpro;AccountKey=R5iA~YgkQ==;
EndpointSuffix=core.windows.net”;

【気になるところ】
・Dynamic VHD(X) allocation:Enable or Disable ※デフォルト有効
・Size In MBs:500MB~1TB ※Quota(Default 30GB) 作成後でも拡張可能
・Virtual Disk Type:VHDX
・SID Directory Name Pattern String:%username%%sid%
・VHDX Sector Size:4KB
・Remove Orphaned OST Files On Logoff:Enable
・Prevent Logon With Failure:Enable


Step3:RDP系レジストリ設定

RDPにまつわる、タイムアウト値をマスターイメージ作成のタイミングで行います。

[コンピューターの構成]ー[管理用テンプレート]ー[Windowsコンポーネント]ー[リモートデスクトップサービス]ー[リモートデスクトップセッションホスト]ー[セッションの時間制限]

・切断されたセッションの制限時間を設定する
(ユーザーが☓ボタンで閉じた状態)[切断]状態を指定時間後に[ロフオフ]させる。
マルチセッション利用時には設定しておきたい。

・アクティブでアイドル状態になっているリモートデスクトップサービスセッションの制限時間を設定する
[アイドル]状態の接続を指定時間後に[切断]させる。[2分後]は固定。
[切断→ログオフ]と組み合わせが可能。

・アクティブなリモートデスクトップサービスセッションの制限時間を設定する
ユーザーの操作状態に関わらず指定時間後に[切断]させる。[2分後]は固定。
[切断→ログオフ]と組み合わせが可能。

・制限時間に達したらセッションを終了する
上記”アクティブでアイドル状態”と”アクティブなリモートデスクトップサービスセッション”
で[切断]されるところを[ログオフ]に変更する。[2分後]は固定。

・RemoteAppセッションのログオフの制限時間を設定する
[切断]状態を指定時間後に[ロフオフ]させる。
※”切断されたセッションの制限時間を設定する”と同じような。。

RDP 帯域の削減に効果が見込めそうな設定

[コンピューターの構成]ー[管理用テンプレート]ー[Windowsコンポーネント]ー[リモートデスクトップサービス]ー[リモートデスクトップセッションホスト]ー[リモートセッション環境]
※AVDのRDPプロパティでも設定可能
※RDPプロパティとGPOで同じ箇所を設定した場合、GPOが適用されます。


Step4:デスクトップ系レジストリ設定

こちらの方法をオススメします。
Azure Virtual Desktop 最適化ツールを試す!

デスクトップにまつわる、タイムアウト値をマスターイメージ作成のタイミングで行います。
※PowerShell(管理者)で実施

・fEnableTimeZoneRedirection:RDSデスクトップにクライアントのローカルタイムを表示
・StoragePolicy:ストレージセンサーを無効にする
・NoAutoUpdate:Windows Updateの自動更新を無効にする

reg add “HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services” /v fEnableTimeZoneRedirection /t REG_DWORD /d 1 /f

reg add “HKCU\Software\Microsoft\Windows\CurrentVersion\StorageSense\
Parameters\StoragePolicy” /v 01 /t REG_DWORD /d 0 /f

reg add “HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU” /v NoAutoUpdate /t REG_DWORD /d 1 /f


Step5:Microsoft 365 Appsインストール

先ず、Office 展開ツールをダウンロードします。※必要なのは、「Setup.exe」のみ

下記、内容を「configuration.xml」として保存

<Configuration>
<Add OfficeClientEdition=”64″ Channel=”Broad”>
<Product ID=”O365ProPlusRetail”>
<Language ID=”ja-jp” />
<ExcludeApp ID=”Access” /> ←適宜インストール除外アプリを記載ください。
<ExcludeApp ID=”Groove” />
<ExcludeApp ID=”Lync” />
<ExcludeApp ID=”OneDrive” />
<ExcludeApp ID=”OneNote” />
<ExcludeApp ID=”Publisher” />
</Product>
</Add>
<Property Name=”SharedComputerLicensing” Value=”1″ />
</Configuration>

先程の「Setup.exe」にて「configuration.xml」をPowerShelldで実行します。

setup.exe /configure C:\<path>/configuration.xml

PowerPointの場合、[ファイル]ー[アカウント]ー[PowerPointのバージョン情報]
[共有コンピューターのライセンス認証]と表示されていれば大丈夫です!

【 Microsoft 365 PACファイル作成 】

Microsoft365向け通信をProxyからバイパスさせるための”PACファイル”を作成します。

先ず、PACファイルを生成するためのPowerShellスクリプトをダウンロード

PowerShellにて”Get-PacFile.ps1″を実行して下さい。※赤字のみ環境に合わせて変更

.\Get-PacFile.ps1 -Type 2 -Instance Worldwide -TenantName Contoso -ClientRequestId b10c5ed1-bad1-445f-b386-b919946339a7 -DefaultProxySettings “PROXY 192.168.0.250:8080” > O365.pac

作成したPACファイルをWebサーバーに配置し、その配置場所を記載します。


Step6:初期化とイメージ化

こちらの方法をオススメします!
マスターイメージ管理サービス! 共有イメージギャラリー を試す!

今後のマスターイメージ更新のために、ここでスナップショットの取得をおすすめします。

必要な設定を終えたら、最後に[sysprep.exe]を実行します。

[キャプチャ]を選択し、イメージを作成します。

マスターイメージ完成!

Host Pool 作成時に、マスターイメージを指定すればOK

お疲れ様でした~!