You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用PowerShell调用Graph API更新托管身份权限时POST报无效引用更新

解决PowerShell调用Graph API添加托管身份应用角色分配时的“Not a valid reference update”错误

你的问题核心是请求体的字段名不符合Microsoft Graph API的规范,导致返回“Not a valid reference update”错误。

问题根源

Graph API对JSON请求体的字段名大小写敏感,你当前代码里的principalID和resourceID(末尾大写D)不符合API要求的驼峰命名格式,正确的字段名应该是principalId和resourceId(末尾小写d)。PowerShell哈希表转JSON时会严格保留原字段名,所以API无法识别你的请求体。

修正后的代码

# 修正字段名为Graph API要求的驼峰格式
$POSTBody = @{
    principalId = "$($MIDData.id)"
    resourceId = "$ObjectID"
    appRoleId = "$($TEMProle.id)"
}

# 验证JSON输出格式
$POSTBody | ConvertTo-Json

$AppRoleAssignment = "https://graph.microsoft.com/beta/servicePrincipals/$ObjectID/appRoleAssignedTo"

Invoke-RestMethod -Uri $AppRoleAssignment -Headers @{Authorization = "Bearer $($TokenAccess)" }  -Method POST -Body ($POSTBody | ConvertTo-Json) -ContentType "application/json"

额外排查点

  • 确认appRoleId是目标服务主体(resourceId对应的对象)上已存在的有效应用角色ID,不能使用随机ID或其他服务主体的角色ID
  • 确保你用来获取令牌的应用注册已被授予AppRoleAssignment.ReadWrite.All或Application.ReadWrite.All权限,且完成了管理员同意
  • 检查托管身份(principalId对应的对象)状态正常,未被禁用

内容的提问来源于stack exchange,提问作者thekevinkalis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 03:02:13