执行Get-AzRoleAssignment命令返回DisplayName为空的问题求助
排查Az角色分配中DisplayName和SignInName为空的问题
核心矛盾点分析
从返回结果能看到两个关键异常:
- 你指定查询的是存储账户层级Scope,但返回结果的
Scope却是管理组层级(/providers/Microsoft.Management/managementGroups/dcdd235cac24cd5c) DisplayName和SignInName字段完全为空
具体排查步骤
1. 确认角色分配的主体类型
空名称字段通常是因为角色分配的主体不是普通用户/服务主体,常见情况包括:
- 托管标识(系统分配或用户分配)
- Azure AD组
- Azure内部使用的系统隐藏主体
- 内置角色的特殊分配
执行以下命令获取主体的类型和ID:
Get-AzRoleAssignment -Scope "/providers/Microsoft.Management/managementGroups/dcdd235cac24cd5c" -RoleAssignmentName "fd" | Select-Object ObjectId, ObjectType
2. 修正查询Scope的匹配问题
指定的存储账户Scope和返回的管理组Scope不匹配,原因可能是:
- 存储账户继承了管理组层级的角色分配,而你查询时未添加
-IncludeInherited参数,导致返回了继承的分配项 - 输入的存储账户Scope存在拼写错误,或该存储账户不在指定的订阅/资源组内
重新执行带继承参数的精准查询:
Get-AzRoleAssignment -Scope "/subscriptions/abc/resourceGroups/test/providers/Microsoft.Storage/storageAccounts/adls2sxcuzeow" -IncludeInherited
3. 查询主体的详细信息
根据步骤1得到的ObjectId和ObjectType,针对性查询主体详情:
- 若为用户:
Get-AzADUser -ObjectId "<ObjectId>"
- 若为服务主体/托管标识:
Get-AzADServicePrincipal -ObjectId "<ObjectId>"
- 若为Azure AD组:
Get-AzADGroup -ObjectId "<ObjectId>"
4. 检查Azure AD读取权限
如果以上命令无法返回主体信息,大概率是你的账号缺少Azure AD的基础读取权限(如Directory Readers角色),需联系Azure AD管理员分配对应权限。
内容的提问来源于stack exchange,提问作者Meghana
相关产品推荐
相关产品推荐

