如何根据显示名称获取指定Azure对象的ObjectID?
根据显示名称获取Azure对象ObjectID的方法
你可以通过Azure PowerShell的Az模块命令,根据显示名称获取不同类型Azure AD对象的ObjectID,以下是具体实现方式:
通用方法(支持任意Azure AD对象)
适用于不确定对象类型的场景,通过过滤显示名称匹配目标对象:
# 替换为你的目标对象显示名称 $targetDisplayName = "示例对象名称" # 获取唯一匹配的ObjectID(若有重名,-First 1返回第一个结果) $objID = (Get-AzADObject -Filter "displayName eq '$targetDisplayName'" -First 1).Id
分类型精准获取
如果明确对象类型,使用对应命令更高效:
- Azure AD应用(服务主体)
$appDisplayName = "你的应用显示名称" $objID = (Get-AzADServicePrincipal -DisplayName $appDisplayName -First 1).Id
- Azure AD组
$groupDisplayName = "你的组显示名称" $objID = (Get-AzADGroup -DisplayName $groupDisplayName -First 1).Id
整合到角色分配脚本
将获取到的$objID直接代入你的角色分配命令,完整示例:
# 定义目标对象显示名称 $targetDisplayName = "目标对象显示名称" # 获取ObjectID(这里用通用方法,可根据对象类型替换为对应命令) $objID = (Get-AzADObject -Filter "displayName eq '$targetDisplayName'" -First 1).Id # 执行角色分配 New-AzRoleAssignment -ObjectId $objID ` -RoleDefinitionName "Contributor" ` -ResourceGroupName "newly-created-resource-group"
注意事项
- 若存在同名对象,
-First 1会返回第一个匹配结果,建议提前确认显示名称唯一性,或添加类型过滤(比如在通用方法的Filter中加入and objectType eq 'Group') - 确保已安装Az模块(执行
Install-Module Az -AllowClobber -Scope CurrentUser),并通过Connect-AzAccount完成Azure登录
内容的提问来源于stack exchange,提问作者Senior Systems Engineer
相关产品推荐
相关产品推荐

