如何使用PowerShell获取Azure访问包中的资源角色及关联AAD组
解决访问包资源角色及关联AAD组查询空值问题
先明确你遇到空值的核心原因
你使用的Get-MgBetaEntitlementManagementAccessPackageResource命令是查询租户内所有可用于访问包的资源池,并非指定访问包已关联的资源,所以输入访问包ID自然返回空。另外要先确认两个前提:
- 你的账号必须拥有权限管理管理员或目录所有者权限,且已执行
Connect-MgGraph -Scopes "EntitlementManagement.Read.All"完成授权 - 确保安装了Microsoft Graph Beta模块,因为权限管理的部分API仅在Beta分支开放:
Install-Module Microsoft.Graph.Beta -Force
正确查询步骤
1. 获取目标访问包的资源角色关联
使用Get-MgBetaEntitlementManagementAccessPackageResourceRoleScope命令,直接指定访问包ID,就能拿到该访问包绑定的所有资源、角色和范围:
# 替换为你的访问包ID $accessPackageId = "xxxx-xxxx-xxxx-xxxx" $resourceBindings = Get-MgBetaEntitlementManagementAccessPackageResourceRoleScope -AccessPackageId $accessPackageId
2. 提取资源详情及关联AAD组
遍历返回的绑定信息,分别查询资源、角色,以及对应的AAD组(如果资源类型是组):
foreach ($binding in $resourceBindings) { # 获取资源基本信息 $resource = Get-MgBetaEntitlementManagementAccessPackageResource -AccessPackageResourceId $binding.AccessPackageResourceId # 获取资源角色信息 $role = Get-MgBetaEntitlementManagementAccessPackageResourceRole -AccessPackageResourceId $binding.AccessPackageResourceId -AccessPackageResourceRoleId $binding.AccessPackageResourceRoleId Write-Host "=== 资源信息 ===" Write-Host "名称: $($resource.DisplayName)" Write-Host "类型: $($resource.ResourceType)" Write-Host "关联角色: $($role.DisplayName)" # 若资源是AAD组,查询组详情 if ($resource.ResourceType -eq "Group") { $aadGroup = Get-MgGroup -GroupId $resource.ResourceId Write-Host "关联AAD组: $($aadGroup.DisplayName) (ID: $resource.ResourceId)" } Write-Host "`n" }
额外排查点
如果执行后仍无结果,去Azure门户的权限管理→访问包中确认目标访问包是否真的关联了资源,有可能是访问包本身未绑定任何资源导致返回空。
内容的提问来源于stack exchange,提问作者Mariza
相关产品推荐
相关产品推荐

