💬
PowerShell で Azure Virtual Desktop のユーザ割当てを変更する
そもそも Azure Virtual Desktop の Application group の assignment がどうなってるか
じつは、Application group に対して、RBAC が設定されているだけだったりします。
Assignments 側の画面でこう設定されていたとします。
Application group の assignment のスクリーンショット
んで、同じく Application group の Access control (IAM) を確認するとこんな感じです。
Application group の RBAC の スクリーンショット
ちょっとわかりづらいですが、ここでは AVD-Collection-01-DAG という Security group に Desktop Virtualization User の RBAC が設定されているだけなんですね。
シンプルでいいなと思いつつ、RBAC の 4,000 割り当てという 制限 を消費していくということでもあります。
マルチセッション ホストの場合には Security group を利用できますが、個人型の場合には困る可能性が、、、ということですね。
ということを踏まえるとこれを変更するための PowerShell は以下のようになるわけです。
PowerShell で Azure Virtual Desktop の user assignment を変更する
こちらが追加する方の PowerShell です。
上記内容を踏まえれば何も難しいことはないです。
Function Add-AzWvdApplicationGroupUser() {
[CmdletBinding()]
param (
[Parameter(Mandatory = $true)] [string] $ResourceGroupName,
[Parameter(Mandatory = $true)] [string] $ApplicationGroupName,
[Parameter(Mandatory = $true)] [string] $SignInName
)
$subscriptionId = (Get-AzContext).Subscription.Id
New-AzRoleAssignment `
-Scope "/subscriptions/$subscriptionId/resourcegroups/$ResourceGroupName/providers/Microsoft.DesktopVirtualization/applicationgroups/$ApplicationGroupName" `
-RoleDefinitionName 'Desktop Virtualization User' `
-SignInName $SignInName
}
削除する方はこんな感じです。
Function Remove-AzWvdApplicationGroupUser() {
[CmdletBinding()]
param (
[Parameter(Mandatory = $true)] [string] $ResourceGroupName,
[Parameter(Mandatory = $true)] [string] $ApplicationGroupName,
[Parameter(Mandatory = $true)] [string] $SignInName
)
$subscriptionId = (Get-AzContext).Subscription.Id
Remove-AzRoleAssignment `
-Scope "/subscriptions/$subscriptionId/resourcegroups/$ResourceGroupName/providers/Microsoft.DesktopVirtualization/applicationgroups/$ApplicationGroupName" `
-RoleDefinitionName 'Desktop Virtualization User' `
-SignInName $SignInName
}
2022 年 5 月時点でたぶんこれが公式の PowerShell module で提供されていないので workaround 的に使っていただく分にはいいのかなと。
ちなみに gist にもともとあったのを記事として書き起こしただけです。
Discussion