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

使用New-AzureADGroupAppRoleAssignment分配组应用角色报错咨询

报错根因

你遇到的Request_BadRequest: Not a valid reference update错误,核心原因是对New-AzureADGroupAppRoleAssignment的四个必填参数的对应对象理解完全错位,该cmdlet所有ID类参数均需传入GUID格式的对象ID,不支持传入显示名、应用客户端ID等值。

参数正确定义

四个参数的正确对应关系如下:

  • -ObjectId:待分配应用角色的Azure AD安全组/M365组的对象ID
  • -Id:目标应用角色本身的ID(即应用角色定义中自带的GUID标识)
  • -PrincipalId:权限主体的对象ID,给组分配角色时和-ObjectId取值完全一致,填入同一个组对象ID即可
  • -ResourceId:承载该应用角色的企业应用对应服务主体的对象ID(注意不是应用注册的对象ID,也不是应用角色ID)
可直接运行的正确脚本示例

不要手动硬填ID,先通过命令拉取对应对象再传参,能避免绝大多数参数错误:

# 1. 读取目标组对象
$targetGroupName = "替换为你的目标组显示名"
$targetGroup = Get-AzureADGroup -Filter "Displayname eq '$targetGroupName'"

# 2. 读取目标企业应用对应的服务主体对象
$targetAppName = "替换为你的企业应用显示名"
$targetServicePrincipal = Get-AzureADServicePrincipal -Filter "Displayname eq '$targetAppName'"

# 3. 读取要分配的目标应用角色
$targetRoleName = "替换为你要分配的应用角色值"
$targetAppRole = $targetServicePrincipal.AppRoles | Where-Object {
  $_.Value -eq $targetRoleName -and $_.AllowedMemberTypes -contains "Group"
}

# 4. 执行角色分配
New-AzureADGroupAppRoleAssignment `
  -ObjectId $targetGroup.ObjectId `
  -Id $targetAppRole.Id `
  -PrincipalId $targetGroup.ObjectId `
  -ResourceId $targetServicePrincipal.ObjectId
常见踩坑说明
  • 必须使用企业应用对应的服务主体ObjectId作为ResourceId,不能使用应用注册的ObjectId或者应用客户端ID(ClientId),二者属于不同的目录对象,ID值不通用。
  • 分配前确认目标应用角色的AllowedMemberTypes属性包含Group,否则即使参数正确也会分配失败,你在门户中能完成分配的角色默认已经满足该要求。
  • 不要给任何ID参数传入显示名字符串,该cmdlet所有ID参数仅接受GUID格式的对象标识。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 20:03:25