如何用PowerShell获取Azure中特定AppRole的用户与组分配信息
获取企业应用指定AppRole的用户/组分配
对应的PowerShell命令
门户中ManagedApplications//AppRoleAssignments对应的PowerShell命令是 Get-AzADAppRoleAssignment,通过该命令可直接查询应用的所有角色分配记录。
具体操作步骤
假设你已通过Get-AzADApplication获取目标企业应用对象(记为$app),且已知目标AppRole的ID(记为$targetAppRoleId),可按以下步骤获取分配该角色的用户和组:
精准筛选目标角色的分配记录
直接通过Filter参数同时指定应用ID和AppRole ID,减少后续处理:# 替换为你的应用对象和目标AppRole ID $app = Get-AzADApplication -DisplayName "你的企业应用名称" $targetAppRoleId = "目标AppRole的ID值" # 获取所有分配了该AppRole的记录 $targetAssignments = Get-AzADAppRoleAssignment -Filter "resourceId eq '$($app.ObjectId)' and appRoleId eq '$targetAppRoleId'"区分并获取用户/组详情
遍历筛选结果,根据PrincipalType字段区分用户和组,再获取对应的主体信息:foreach ($assignment in $targetAssignments) { switch ($assignment.PrincipalType) { "User" { $user = Get-AzADUser -ObjectId $assignment.PrincipalId Write-Output "用户: $($user.DisplayName) | UPN: $($user.UserPrincipalName)" } "Group" { $group = Get-AzADGroup -ObjectId $assignment.PrincipalId Write-Output "组: $($group.DisplayName) | 别名: $($group.MailNickname)" } } }
补充说明
- 若你的Az模块版本较旧,
Get-AzADAppRoleAssignment可能不支持复杂Filter,可先获取该应用的所有角色分配,再通过Where-Object筛选:$allAssignments = Get-AzADAppRoleAssignment -ResourceId $app.ObjectId $targetAssignments = $allAssignments | Where-Object { $_.AppRoleId -eq $targetAppRoleId }
内容的提问来源于stack exchange,提问作者wgemini
相关产品推荐
相关产品推荐

