Azure Virtual Desktop Classic を構築する!

概要については、前回解説しましたので、今回は構築していきたいと思います。
設定を行うまえに、Azure Virtual Desktop Classic での全体像を確認したいと思います。

AVDの設定は、AVD(Managed)環境に対して、PowerShellで行うため、どのような設定を何のために行うのか、把握し辛いかと思います。
先ずは、設定に必要な全体項目を把握する事から始めましょう!
※AVD Classicは、2026年9月30日に廃止されます。

※Azure Portal に対応した新しい Azure Virtual Desktop (AVD) が登場しました!
AVD と AVD Classic との違いとは?

【全体構造】 ※サービスメタデータ
Tenant Group:テナントグループ ※現時点では、作成/変更 不可
Tenant:識別名。 ※1つのサブスクリプションから、複数作成可能
Host Pool:仮想マシンが配置されるプール
Desktop Application Group:デスクトップ配信用グループ
OfficeApps:アプリケーション配信用グループ
UPN:ユーザーアカウント

※[UPN]あたり、[Host Pool]内のどちらかのグループ[Desktop Application Group] [OfficeApps]にしか所属できません。複数の[Host Pool]に所属する事は可能。


全体の流れ

Step1:Azure上での環境構築 ※省略します。
Step2:マスターイメージ用仮想マシンの作成 (Azure)
Step3:エンタープライズ アプリケーションの作成 (Azure)
Step4:テナントの作成 (PowerShell)
Step5:Host Poolの作成 (Azure)
Step6:RemoteAppの作成 (PowerShell)


Step1:Azure上での環境構築

事前に下記環境を作成しておきます。
・リソースグループ
仮想ネットワーク ※DNSをActive Direcotoryに向ける
仮想マシン(Active Directory) x2 ※オンプレでも可
・仮想マシン(AzureAD Connect) x1 ※オンプレでも可
・仮想マシン(マスターイメージ用) ※任意

[今回の環境]
ディレクトリ名:taushiga
AADドメイン名:taushiga.onmicrosoft.com
ADドメイン名:localad.com

AzureAD Connectを使い、Active DirectoryとAzureADを同期しておく必要があります。
※VDIデバイスの[Hybrid Azure AD join]はサポートされていません。


Step2:マスターイメージ用仮想マシンの作成

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


Step3:エンタープライズ アプリケーションの作成

自身の AzureAD テナントから、Windows Virtual Desktop (Managed)環境に対してのアクセスを許可する管理者用アカウントを設定します。

エンタープライズ アプリケーション作成の専用サイトがありますので利用します。

Consent Option:Server App / Client App ※両方ともに[Submit]
AAD Tenant GUID or Name:テナントID(ディレクトリID)を入力

AzureADを確認すると、[Windows Virtual Desktop] [Windows Virtual Desktop Client]が作成されています。

[Windows Virtual Desktop]ー[ユーザーとグループ]ー[ユーザーの追加]を選択

管理者用アカウントを選択し、[TenantCreator]を割り当てます。
※MFAアカウント=OK、外部AzureADアカウント=NG


Step4:テナントの作成

AVD (Managed)環境、[Default Tenant Group]内に自身のテナントを作成します。
※作業用端末で実施
※PowerShell(管理者)で行う必要があります。

AVD用のモジュールをインストール
Install-Module -Name Microsoft.RDInfra.RDPowerShell
Import-Module -Name Microsoft.RDInfra.RDPowerShell

AVD(Managed)環境に(Step3で指定した)管理者用アカウントでサインイン
Add-RdsAccount -DeploymentUrl “https://rdbroker.wvd.microsoft.com”

AVDテナント作成とAzureADテナントの紐づけ
<ディレクトリ名><ディレクトリID><サブスクリプションID>
New-RdsTenant -Name taushiga -AadTenantId 77628c6c -AzureSubscriptionId 5573f89f
※ディレクトリ名は、Azure側のディレクトリ名と一致させる必要はない。単なる識別名


Step5:Host Poolの作成

AVD (Managed)環境、[Host Pool][Desktop Application Group][UPN]の設定を行います。
※[OfficeApps](RemoteApp)は、PowerShellにて行います。

[+新規]ー[検索:Windows Virtual Desktop – Provision a host pool]ー[作成]を選択

Hostpool name:表示名
Desktop type:[Pooled / Personal]
Default desktop users:アクセスを許可するAzureADユーザー
Subscription:Azureサービスの提供範囲
Resource group:※Host Poolごとに作成するとわかりやすい
Location:デプロイするAzureのリージョン

Usage Profile:[Light(6) / Medium(4) / Heavy(2) / Custom(1)]
※サーバー台数算出のための接続数の目安。Personalの場合は、表示されません。
Total users:VDI利用者の数
Virtual machine size:デフォルト[D8s v3]
Virtual machine name prefix:Pool-VDI-0,Pool-VDI-1,

Image source:[Blob storage / Managed image / Gallery]
Image OS version:[Server 2016 / Win10 Multi-session] ※現時点
Disk Type:[HDD / SSD]
AD domain join UPN:ドメイン参加用のユーザーを指定
Admin Password:
Specify domain or OU:[no / yes]
ーDomain to join:ドメイン名
ー(Optional) OU path:※OU=WVD,DC=localad,DC=com ※AVD専用OUの作成を推奨
Virtual network:VDIを展開する仮想ネットワークを指定
Subnets:VDIを展開するサブネットを指定

Windows Virtual Desktop tenant group name:変更不可
Windows Virtual Desktop tenant name:事前に登録したAVDのディレクトリ名
Windows Virtual Desktop tenant RDS Owner:[UPN / Service principal]で指定が可能
UPN:(Step2で指定した)管理者用アカウント
Password:

下記リソースが作成されます。 ※節約のためサーバー2台構成に変更しています。

これにて、デスクトップ配信の環境が整いました。


Step6:RemoteAppの作成

AVD (Managed)環境、[OfficeApps](RemoteApp)の設定を行います。
※作業用端末で実施
※PowerShell(管理者)で行う必要があります。

RemoteAppグループの作成
New-RdsAppGroup -TenantName “taushiga” -HostPoolName “Pool-VDI” -Name “officeApps” -ResourceType RemoteApp

インストールされているアプリケーション一覧を表示
※指定したHost Pool内のVMが起動している必要がある
Get-RdsStartMenuApp -TenantName “taushiga” -HostPoolName “Pool-VDI” -AppGroupName “officeApps”

配信するアプリケーションを設定
New-RdsRemoteApp -TenantName “taushiga” -HostPoolName “Pool-VDI” -AppGroupName “officeApps” -Name “IE” -AppAlias “internetexplorer
-name:表示名なので自由に設定可能
-AppAlias:Get-RdsStartMenuAppで表示された、[AppAlias]を記入

アプリケーション配信グループ[officeApps]に、ユーザーを追加
Add-RdsAppGroupUser -TenantName “taushiga” -HostPoolName “Pool-VDI” -AppGroupName “officeApps” -UserPrincipalName “user01@taushiga.onmicrosoft.com


おまけ

Host Poolへの、負荷分散方法と最大接続数の変更を行いたいと思います。
デフォルトだと、[負荷分散方法:BreadthFirst] [最大接続数:999999]となっているので、PowerShellにて変更します。

[負荷分散方法:DepthFirst] [最大接続数:10]
Set-RdsHostPool -TenantName “taushiga” -HostPoolName “Pool-VDI” –DepthFirstLoadBalancer -MaxSessionLimit 10

[負荷分散方法:BreadthFirst] [最大接続数:10]
Set-RdsHostPool -TenantName “taushiga” -HostPoolName “Pool-VDI” –BreadthFirstLoadBalancer -MaxSessionLimit 10


おまけ2

[デスクトップFriendlyNameの変更]
Set-RdsRemoteDesktop -TenantName “taushiga” -HostPoolName “Pooled-Win10-Master” -AppGroupName “Desktop Application Group” -FriendlyName “CSA

[アプリケーションFriendlyNameの変更]
Set-RdsRemoteApp -TenantName “taushiga” -HostPoolName “Pooled-Win10-Master” -AppGroupName “officeApps” -Name “IE” -FriendlyName “CSA-IE


管理機能を見てみましょう!

今まで、設定してきた[Host Pool] [Desktop Application Group] [OfficeApps] [UPN]など
どのプールに、どのようなデスクトップ、アプリケーションを配信し、どのユーザーに許可しているのかも、すべてPowerShellで確認する必要があります。 ※正直メンドイです~

ですが、無いよりマシです!! よく利用しそうなPSコマンドを記載しておきます。
“Get-Rds~”コマンドで乗り切りましょう!!

プールに所属するサーバー一覧
Get-RdsSessionHost -TenantName “taushiga” -HostPoolName “Pool-VDI

デスクトップ プールに所属するユーザー一覧
Get-RdsAppGroupUser -TenantName “taushiga” -HostPoolName “Pool-VDI” -AppGroupName “Desktop Application Group”

配信設定済みのアプリケーション一覧
Get-RdsRemoteApp -TenantName “taushiga” -HostPoolName “Pool-VDI” -AppGroupName “officeApps”

接続状況
Get-RdsUserSession -TenantName “taushiga” -HostPoolName “Pool-VDI

接続履歴
Get-RdsDiagnosticActivities -TenantName “taushiga

接続履歴 詳細 ※Log Analyticsに送信するように変更となりました。
Get-RdsDiagnosticActivities -TenantName “taushiga” -Detailed