如何使用PowerShell获取Azure Virtual Desktop主机池已分配用户列表
获取Azure Virtual Desktop会话主机的已分配用户列表
AVD的用户分配信息并不直接存储在主机池或会话主机对象中,而是绑定到**应用组(Application Group)**上——所有能访问会话主机的用户,都是通过被分配到对应主机池的应用组(桌面应用组/远程应用组)实现的。你可以直接用PowerShell串联查询,无需导出CSV再筛选。
直接查询所有主机池的用户分配
执行以下PowerShell命令,会遍历所有主机池,自动关联对应的应用组,并列出每个应用组的已分配用户:
# 获取所有AVD主机池 $hostPools = Get-AzWvdHostPool # 遍历主机池,查询关联应用组的用户分配 foreach ($pool in $hostPools) { Write-Host "=== 主机池: $($pool.Name) ===" -ForegroundColor Cyan # 获取当前主机池关联的所有应用组 $appGroups = Get-AzWvdApplicationGroup -ResourceGroupName $pool.ResourceGroupName | Where-Object { $_.HostPoolArmPath -eq $pool.Id } foreach ($group in $appGroups) { Write-Host "应用组: $($group.Name) ($($group.ApplicationGroupType))" -ForegroundColor Yellow # 查询应用组的RBAC角色分配(AVD用户分配基于RBAC) $userAssignments = Get-AzRoleAssignment -ResourceGroupName $pool.ResourceGroupName ` -ResourceName $group.Name ` -ResourceType 'Microsoft.DesktopVirtualization/applicationGroups' if ($userAssignments) { $userAssignments | Select-Object DisplayName, SignInName, RoleDefinitionName | Format-Table -AutoSize } else { Write-Host "无已分配用户" -ForegroundColor Gray } Write-Host "`n" } }
查询指定主机池的用户分配
如果只需要单个主机池的信息,直接指定主机池和资源组名称过滤:
# 替换为你的目标主机池和资源组名称 $targetPoolName = "Your-Host-Pool-Name" $resourceGroupName = "Your-Resource-Group-Name" $pool = Get-AzWvdHostPool -Name $targetPoolName -ResourceGroupName $resourceGroupName Write-Host "=== 主机池: $($pool.Name) ===" -ForegroundColor Cyan $appGroups = Get-AzWvdApplicationGroup -ResourceGroupName $resourceGroupName | Where-Object { $_.HostPoolArmPath -eq $pool.Id } foreach ($group in $appGroups) { Write-Host "应用组: $($group.Name) ($($group.ApplicationGroupType))" -ForegroundColor Yellow $userAssignments = Get-AzRoleAssignment -ResourceGroupName $resourceGroupName ` -ResourceName $group.Name ` -ResourceType 'Microsoft.DesktopVirtualization/applicationGroups' if ($userAssignments) { $userAssignments | Select-Object DisplayName, SignInName, RoleDefinitionName | Format-Table -AutoSize } else { Write-Host "无已分配用户" -ForegroundColor Gray } Write-Host "`n" }
说明
- AVD的用户访问权限基于RBAC,通常分配的角色是「Desktop Virtualization User」,命令会自动筛选出这类角色的分配记录。
- 如果需要将结果导出到CSV,只需在查询后添加
| Export-Csv -Path "AVD-User-Assignments.csv" -NoTypeInformation即可,无需先导出主机池再筛选。
内容的提问来源于stack exchange,提问作者theillien
相关产品推荐
相关产品推荐

