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

使用PowerShell PATCH更新Entra应用AppRoles报BadRequest问题排查

解决Entra ID应用注册App Roles更新的BadRequest错误

场景概述

通过BICEP的Microsoft.Resources/deploymentScripts@2023-08-01资源,在DevOps流水线中自动化管理Microsoft Entra ID应用注册,已实现应用创建、密钥更新、API权限配置等功能,但在添加/更新App Roles时遇到报错。

错误信息

读取JSON时发现意外的'PrimitiveValue'节点,预期为'StartArray'节点

排查步骤

  1. 验证应用注册存在,托管标识拥有足够的Entra ID操作权限,代码逻辑对齐官方App Roles更新示例
  2. 检查请求日志发现:生成的JSON payload中,allowedMemberTypes字段被序列化为字符串,但代码中明确定义为数组类型

根因与解决方法

问题源于PowerShell的ConvertTo-Json命令默认深度限制,导致嵌套数组结构被错误转换为字符串。解决方法是显式设置-Depth参数(建议根据实际嵌套层级设置足够大的值,比如10),确保数组结构正确序列化:

# 构造App Roles payload并正确序列化
$appRolesUpdateBody = @{
    appRoles = @(
        @{
            allowedMemberTypes = @("User", "Application")
            displayName = "Editor"
            id = [Guid]::NewGuid().ToString()
            isEnabled = $true
            description = "Can edit resources"
            value = "Editor"
        }
    )
} | ConvertTo-Json -Depth 10

# 调用Graph API更新应用注册
Invoke-MgGraphRequest -Method Patch -Uri "/applications/{appId}" -Body $appRolesUpdateBody

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 12:22:37