如何用PowerShell管理Azure应用注册扩展属性及解决MsGraph报错
Azure应用注册扩展属性配置与PowerShell操作指南
一、问题背景
Azure应用注册不支持将组分配为所有者,现有notes字段已被占用,仅能通过**扩展属性(extension attribute)**存储所有者元数据(manifest的tags字段暂无法使用)。已通过Azure Shell的curl尝试创建扩展属性,需改用PowerShell完成以下操作:创建/配置扩展属性、设置/更新属性值、测试属性值,同时解决Microsoft Graph命令报错问题。
二、PowerShell完整操作步骤
1. 前置准备:配置Microsoft Graph PowerShell环境
先解决Graph命令权限报错问题:
- 安装/更新Graph模块:
Install-Module Microsoft.Graph -Force -AllowClobber - 登录并申请所需权限(需应用管理员/全局管理员权限):
Connect-MgGraph -Scopes "Application.ReadWrite.All, Directory.ReadWrite.All" - 验证登录上下文,确保包含所需权限:
若权限不足,强制刷新重新授权:Get-MgContextConnect-MgGraph -Scopes "Application.ReadWrite.All" -ForceRefresh
2. 创建/配置扩展属性
注意:扩展属性为租户级资源,创建后无法修改Name和DataType,需确认参数正确:
# 替换为目标应用注册的Object ID(非Client ID) $appObjectId = "<你的应用Object ID>" # 创建扩展属性 New-MgApplicationExtensionProperty -ApplicationId $appObjectId -BodyParameter @{ Name = "Owner" DataType = "String" TargetObjects = @("Application") }
执行成功后会返回扩展属性详情,其中**完整名称(格式为extension_<随机标识>_Owner)**是后续操作的核心标识。
3. 设置/更新扩展属性值
使用上一步返回的完整扩展属性名称进行赋值:
# 替换为实际的扩展属性完整名称 $extensionPropertyName = "<扩展属性完整名称(如extension_abc123_Owner)>" # 替换为实际的所有者信息(如部门、人员名称) $ownerValue = "技术部-李四" # 更新应用注册的扩展属性值 Update-MgApplication -ApplicationId $appObjectId -BodyParameter @{ $extensionPropertyName = $ownerValue }
4. 测试/验证属性值
方式1:直接提取目标属性
Get-MgApplication -ApplicationId $appObjectId | Select-Object Id, DisplayName, @{ Name = "Owner" Expression = { $_.AdditionalProperties[$extensionPropertyName] } }
方式2:查看所有扩展属性及应用完整元数据
# 获取应用的所有扩展属性定义 Get-MgApplicationExtensionProperty -ApplicationId $appObjectId # 获取应用完整信息,查看AdditionalProperties中的扩展属性值 $app = Get-MgApplication -ApplicationId $appObjectId -Property "displayName, additionalProperties" $app.AdditionalProperties
三、常见问题排查
- 确认使用的是应用注册的Object ID,而非Client ID(应用ID)
- 若创建扩展属性失败,检查当前账号是否拥有应用管理员或全局管理员权限
- 若更新/查询属性无结果,确认扩展属性的完整名称拼写正确
内容的提问来源于stack exchange,提问作者not_a_generic_user
相关产品推荐
相关产品推荐

