こんにちは、駆け出しアーキテクトのやまぱんです。
まず初めにこの記事は次の記事のインスパイア記事です。
上記をトレースしつつ、UI が変わっていたり、自分がハマったポイントなども少しあったり、自分なりに補足する形でリライトした記事になります。
というわけで Azure Virtual Desktop、いわゆる AVD(旧 WVD)の環境をサクッとサクッと作りたい方向けの記事になります。
所要時間は習熟度にもよると思います待ち時間が結構ある (特に AADDS) 部分もあるので 3 ~ 4 時間ぐらいだと思います。
Azure サブスクリプション
ここでは Microsoft アカウントに紐づけた Visual Studio サブスクライバー向けの Azure を使っていますが、無料トライアルなどでも OK でしょう。
今回、新規に Azure AD Domain Services を構築するため、Azure AD に対しては"全体管理者"特権が必要です。
Visual Studio や無料トライアルなどで Microsoft アカウントに紐づけたサブスクリプションをご利用であればこの権限があるはずですが、企業アカウントの場合はこの権限がないかもしれないのです。
ユーザー
こちらもインスパイア元の記事を踏襲しています。
AD 管理のためのユーザーを 1 名、検証用ユーザーを 2 名用意することにします。
新規に作成する例をここでは取り上げますが、既存であればそちらを使ってもかまいません。
| ユーザー名 | 役割 |
|---|---|
| mgr | 管理者 |
| hanako | 利用者 1 |
| taro | 利用者 2 |
検証環境全体図
こんな環境を作っていきます。(こちらの図もインスパイア元の記事をそのまま借りています。)

RG の作成
Vnet(仮想ネットワーク)作成
default の vnet を AVD の VM 用に利用するものとする。
AADDS の作成(Azure AD(Active Directory) Domain Services)の作成
今回は AAD の ADDS 機能を使う(オンプレ ADDS との連携はしない)シンプルな環境です。
余談
このほかに、オンプレの ADDS と連携したり、AAD もオンプレ AD も DS なしで構成する Azure AD Join という構成も可能です。
SBSC&S さんの記事で Azure AD Join のものがありましたので紹介しておきます。
では、はじめましょう!
Azure Portal の検索窓から AAD などで検索して Azure AD Domain Services を選択

2023/03/08(水)時点では AADDS の作成の画面が英語 Azure Portal になっていた。
ローカルランゲージへの翻訳は遅れがあるので、しばらくすると日本語に変わると思われる。
AADDS とは
AADDS は IaaS(オンプレ)の ADDS の AAD バージョンです。
前者の AAD 版とオンプレ版の ADDS の機能の違いについては下記に記載されています。
https://learn.microsoft.com/ja-jp/azure/active-directory-domain-services/compare-identity-solutions
下記はその抜粋

Basic タブ
Networking タブ
ネットワークでは、先ほど作成した仮想ネットワーク Vnet-avd を選び、サブネットは専用のサブネットを新規作成するため、表示されたまま (新規作成 - New) にします。
他のタブはそのまま
他のタブはそのままの設定
デプロイ確認
(抄訳)このディレクトリに対して Azure AD Domain Services を有効にすることで、NTLM および Kerberos 認証に必要な資格情報ハッシュを Azure AD に格納することに同意したことになります。
デプロイ開始
時間がかかる
完成確認
AADDS ブレードに作成した AADDS サービス (konoha.avd.test) ができていることを確認

AADDS の設定
DNS サーバの設定を行う
初回アクセス時は出ないことがあるのでその場合は Refresh をクリックして下記の警告メッセージを表示させクリックする。

Run をクリック
Click the "Run" 、日本語ブレードに変わっていたら(おそらく) "実行" をクリック。

【上記英文抄訳】
ネットワーク診断は、Azure AD Domain Services が設計どおりに動作するのを妨げる不足または既知の構成について、論理的な Azure Resource Manager ネットワーク環境をチェックする機能を提供します。
[実行] をクリックして、Azure AD Domain Services をホストしているネットワーク サブネットを診断します。
fix をクリック
さらに fix をクリック
【抄訳】
- 問題が見つかりました
マネージド ドメイン サービス IP 10.0.1.5、10.0.1.4 の DNS サーバー設定は、仮想ネットワーク Japan East/Vnet-avd 用に構成する必要があります- 解決
Azure AD Domain Services のネットワーク構成ガイドラインに従って、次の修正が提案されています。
東日本/Vnet-avd でマネージド ドメイン サービス IP 10.0.1.5、10.0.1.4 の DNS サーバー設定を追加します。
修正は、手動で実行するか、下の [修正] をクリックして実行できます。下の [修正] をクリックすると、提案された修正がお客様に代わって実行されることに同意したことになります。
Running が表示される
なぜかそのまま warning がのこっていた が、その後、メッセージに表示されている vnet (Vnet-avd) の画面で DNS 設定を見てfix (DNS の IP アドレス( IP 10.0.1.5、10.0.1.4 ) が適応)されていること を確認する。

グループ・ユーザーの作成
Azure AD に AVD を利用できるユーザーのグループを作成します。
Azure Portal → AAD を選択する。

セキュリティグループの作成
**3 分 ~ 5 分ぐらいすると、グループブレードの中に作成したグループが確認できます。

ユーザーの作成
下記のユーザーを作成します。
| ユーザー名 | 名前 | グループ |
|---|---|---|
| mgr | AD Manager | AAD DC Administrators |
| hanako | Hanako Micro | AVD_Users |
| taro | taro Micro | AVD_Users |
AAD のユーザーブレードから作成します。
この時、初期パスワードを設定しておきます。
また、ドメインが konoha.avd.test (先ほど AADDS で設定したしたものになっていなくても今回は問題ありません。 デフォルトで出てくるもののままで結構です。
このドメイン名は Azure にログインする際に必要となりますのでメモしておきましょう。
なお、AADDS で設定したドメインは AVD の VM に入る際に必要になります。
作成したユーザーで一度ログインする
mgr ユーザーの初期パスワードを恒常的なパスワードに変更するため、一度ログインします。
例えばブラウザ Edge を右クリックして InPrivate ウインドウを開き、Azure Portal に作成した mgr アカウントでログインします。
ここでログインするアカウントのドメインは、Azure AD のドメイン名(今回は mgr@XXXXXXXX.onmicrosoft.com)で、AADDS のドメイン konoha.avd.test ではない ことに注意してください。

Azure Files (プロファイル保管用ファイルサーバー)の作成
まずストレージ アカウントの作成
ストレージ アカウントの名前は小文字英文字かつユニークである必要があるので適当につけます。
今回は下記のように作成しました。

ファイル共有の作成
AADDS のユーザーからのアクセスをできるようにする。
AADDS のユーザーを受け入れるようにストレージ アカウント側で設定。
"Active Directory:構成されていません" をクリックして下記の流れで設定します。

つぎに設定した AADDS のグループに対してアクセス権を設定します。
こんな感じで設定します。
ロールは "記憶域ファイルデータの SMB 共有の管理者特権の共同作成者" です。
Docs としてはこのあたりになります。
ファイル共有の URL をコピー
あとでつかうので URL を コピーしておきます
"https://konohaavdpro XXX .file.core.Windows.net/profile"
グループポリシーの設定
管理用の Azure VM の作成
AD DS のポリシー設定をするため、管理用の VM を作成します。
こちらは Microsoft のドキュメントがありますので、これを参考に作成します。
・ Windows Server VM をマネージド ドメインに参加させる
今回は Windows Server 2016 で作成します。
- リソースグループ; RG-AVD-test
- VM 名: VM-AVDmanagewins2016
- イメージ: Windows Server 2016 Gen1 [samalldisk]
検証用なので、smalldisk でサイズも B2ms で下記のようなパラメータで作成します。
管理用の Azure VM のドメイン参加
作成した Azure VM に作成時に作成したローカルユーザーで RDP して、ドメイン参加します。
ここで参加するのは AAD のドメインではなく、AADDS のドメインです。
つまり今回であれば mgr@konoha.avd.test です。
*一応日本語化してますが、後述する通りなので検証用 AVD 環境を作る目的であればいったん英語版のまま進めてもよいかと思います。
下記の要領でドメイン参加します。
(ついでにキリが悪いので コンピューター名も -wi を削除しています。)

パスワードを間違えすぎると下記のようなメッセージがでますので注意しましょう。
Ref:)
・ Azure Active Directory Domain Services マネージド ドメインでアカウントがロックアウトされる問題を解決する
https://learn.microsoft.com/ja-jp/azure/active-directory-domain-services/troubleshoot-account-lockout#common-account-lockout-reasons
”既定では、2 分間で 5 回パスワードの入力に失敗すると、アカウントは 30 分間ロックアウトされます。”
日本語化の影響かドメイン参加後に RDP 使用とした際に NLA エラーが出たので、もしでた際にはこちらを参考にしてください
- Azure VM で NLA エラーが出たときの回避策
https://qiita.com/aktsmm/items/81b441ee813293f13017
グループポリシーの機能の追加
FSLogix ポリシー設定
FSLogix とは
https://learn.microsoft.com/ja-jp/fslogix/overview
上記より抜粋。
FSLogix は、Windows リモート コンピューティング環境でのユーザー プロファイルを強化して有効にします。 物理デバイスを使用するときに、FSLogix を使用して、移植性の高いコンピューティング セッションを作成することもできます。
- FSLogix には次のものが含まれます。
プロファイル コンテナー
Office コンテナー
Application Masking
Java Version Control- FSLogix を使うと、次のことができます。
リモート コンピューティング セッション ホスト間でユーザー データをローミングする
仮想デスクトップ環境へのサインイン時間を最小限にする
ホストやクライアントとリモート プロファイル ストアの間のファイル IO を最適化する
ローカル プロファイル エクスペリエンスを提供し、ローミング プロファイルを不要にする
アプリケーションと "ゴールド イメージ" の管理を簡素化する
特定の URL とアプリケーションによって使われる Java のバージョンを指定する
必要ファイルのダウンロード
まず、ここ(https://aka.ms/fslogix_download) にあるファイルを Windows Server 内にダウンロードします。
ダウンロードした Zip ファイルを展開したら、下記のファイルをコピーします。
| ファイル | コピー先 |
|---|---|
| fslogix.admx | C:\Windows\PolicyDefinitions |
| fslogix.adml | C:\Windows\PolicyDefinitions\en-US |
Group Policy Management の設定
Group Policy Management を起動して、AADDC Computer GPO を右クリックし、Edit..
グループポリシーの管理(Group Policy Management)を起動

AADDC Computer GPO を右クリックし、Edit(編集)..

開いた Group Policy Management Editor から、下記のように FSLogix の Profile Containers を開き、下記の設定を行います。

| Setting | Value |
|---|---|
| Enabled | On |
| Delete local profile when FSLogix Profile should apply | On |
| VHD Location | <ファイルシェアへのパス>を設定 |
ファイルシェアへのパスは、Azure Files の項目で作成したファイル共有への URL を UNC で記述します。
例えば
"https://konohaavdpro XXX .file.core.Windows.net/profile"
であれば、
\\konohaavdpro XXX .file.core.Windows.net\profile となります。
一応の補足すると"\"は "半角¥マーク"でも入力できます。

タイムゾーンのリダイレクト設定
- [コンピューターの構成] → [ポリシー] → [管理用テンプレート:ローカル~~] → [Windows コンポーネント] → [リモートデスクトップサービス] → [デバイスとリソースのリダイレクト] → ”タイムゾーン リダイレクトを許可する” を"有効"にします。
英語版
- [Computer Configuration] → [Policies] → [Administrative Templates] → [Windows Components] → [Remote Desktop Services] → [Remote Desktop Session Host] → [Device and Resource Redirection] → "Allow time zone redirection"を"Enabled"に設定します。
マスターイメージの作成
イメージ用仮想マシンの作成
セッションホスト用のマスターイメージを作成します。今回は、Windows 10 multi-sessionを利用します。
Azure でしかつかえない AVD 向けの OS らしいです。
イメージ作成用で、AVD ユーザーが利用するわけではありませんから、VM のサイズなどはあまり気にしなくて構いません。
下記のような設定値で作成します。OS は必ずマルチセッションを指定します。

FSLogix のインストール
Azure VM の作成が終わったら管理用の Windows Server と同様にここ(https://aka.ms/fslogix_download) にあるファイルを Windows 内にダウンロードします。
ダウンロードした Zip ファイルを展開します。
展開した中から、x64\Release\FSLogixAppsSetup.exe を実行して、FSLogix をインストールします。
イメージの汎用化準備 (Windows アップデート&日本語化)
諸々アップデートして各種表示を日本語、時刻も UTC+9:00 化します。
言語パックインストールして再起動後も Windows Update を確認してこれ以上アップデートが無いことを確認
言語パック周りが原因で sysprep でエラーでるのでここは丁寧に!!
日本語化が目的でなければいったん英語版のまま進めても OK だと思います。
一度、sysprep で下記のようなエラーが出ました。
C:\Windows\System32\Sysprep\Panther\setupact.log
> Package Microsoft.LanguageExperiencePackja-JP_19041.56.182.0_neutral__8wekyb3d8bbwe was installed for a user, but not provisioned for all users. This package will not function properly in the sysprep image.
下記参考にする
- MS サポートの公式ブログ
・ AVD ARM 日本語化イメージ作成手順について | Microsoft Japan Windows Technology Support Blog (jpwinsup.GitHub.io)
https://jpwinsup.GitHub.io/blog/2021/01/20/RemoteDesktopService/AVD/AVD-ARM-Japanese-image/ - MS 社員のブログ
・ Azure Image Builder で 日本語化を楽し隊 | クラウドを勉強し隊 (kentsu.website)
https://www.kentsu.website/2022/12/09/azure-image-builder-%E3%81%A7-%E6%97%A5%E6%9C%AC%E8%AA%9E%E5%8C%96%E3%82%92%E6%A5%BD%E3%81%97%E9%9A%8A/
下記のスクリプトを使うことで自動化することもできるよう。(今回は試していません。)
・ azureimagebuilder/AIBscript.ps1 at main · NakayamaKento/azureimagebuilder (GitHub.com)
https://github.com/NakayamaKento/azureimagebuilder/blob/main/win10ja/AIBscript.ps1
イメージの汎用化
下記コマンドにて sysprep を行い、OS を一般化します。
C:\Windows\System32\Sysprep\sysprep.exe /generalize /oobe /shutdown
マスターイメージのキャプチャ
イメージを保存するため、先ほど sysprep した仮想マシンのキャプチャを行います。
状態が停止済みであることを確認して、キャプチャを押します。

共有イメージギャラリーにイメージを置かず、キャプチャした後はこの VM を使わなくなりますので、削除します。

作成したイメージの確認
Azure Portal → イメージ にて作成したイメージが確認できる

AVD 環境構築
ようやく AVD の構築です。
ホストプールの作成
Azure Portal → "azure virtual desktop" を検索し選択します。

ホストプールの作成ボタンを押して、作成していきます
こんな感じで作成していきます。
基本タブ
仮想マシンタブ
ワークスペースタブ
以上の設定をして作成します
AVD ホストプール作成設定まとめ&作成
ホストプールの作成が終われば、最後に、利用できるユーザーを割り当てます。
作成の際にアプリケーショングループができているので、これを開き、割り当てを選択して、AVD_Users を追加します。
ホストプール → アプリケーショングループ → host-pool-DAG(作成されているアプリケーショングループ) → 割り当て → 追加
Azure VM の確認
設定した prefix の Azure VM が設定した台数分作成されていることが確認できます。
接続テスト
WEbClient
- こちらにアクセスします。
https://rdweb.wvd.microsoft.com/arm/webclient
アカウント作成後はじめてのログインの場合はパスワードを変更する必要あり。

- AVD の VM に入る
こちらは AADDS のドメインユーザーで参加します。
こちらの例では hanako@konoha.avd.test
無事にログイン完了!
デスクトップクライアントもある
今回は省略しますが、下記からダウンロードできます。
Windows クライアントにソフトウェアをインストールして利用します。
下記のものが用意されていますので、環境に合わせてインストールします。クライアントに管理者権限がなくても大丈夫。
• Windows (64 ビット) https://go.microsoft.com/fwlink/?linkid=2068602
• Windows (32 ビット) https://go.microsoft.com/fwlink/?linkid=2098960
• Windows ARM64 https://go.microsoft.com/fwlink/?linkid=2098961
クライアントをインストールして起動すると、登録ボタンを押して進みます。

参考 URL など
公式 Docs
- Azure Virtual Desktop のドキュメント
https://learn.microsoft.com/ja-JP/azure/virtual-desktop/
AVD 系に詳しいブログ
- くらう道
AVD で気になることがある場合下記の MS 社員のブログが非常にオススメです。
AVD って完全閉域環境で使えるのか?だと下記を読めばわかります。
その他の必要な通信はプライベートリンク以外から通す必要がありますので、完全に閉域化できるわけではありません。
途中でも紹介した URL たち
- MS サポートの公式ブログ
・ AVD ARM 日本語化イメージ作成手順について | Microsoft Japan Windows Technology Support Blog (jpwinsup.GitHub.io)
- MS 社員のブログ
・ Azure Image Builder で 日本語化を楽し隊 | クラウドを勉強し隊 (kentsu.website)
下記のスクリプトを使うことで自動化することもできるよう。(今回は試していません。)
・ azureimagebuilder/AIBscript.ps1 at main · NakayamaKento/azureimagebuilder (GitHub.com)









































