PowerShell调用Graph API时Invoke-RestMethod报400错误如何解决
问题修复方案
核心错误原因
你构造请求体$body时存在两处语法问题,直接导致接口返回400错误:
- 你将PowerShell专属的哈希表语法
@{}、数组声明语法@()直接写入了纯JSON字符串中,JSON标准规范仅识别对象用{}、数组用[],不识别带@前缀的PowerShell语法 - JSON同级属性之间必须用英文逗号分隔,你的
web属性和identifierUris属性之间遗漏了逗号
修复方案
有两种可选修复方式,推荐使用第二种,避免手动写JSON出现语法错误:
方式1:直接修正JSON字符串
将你的$body声明部分替换为以下代码即可:
$body = @' { "web": { "redirectUris": [ "https://signin.aws.amazon.com/saml" ] }, "identifierUris": [ "https://signin.aws.amazon.com/saml" ] } '@
方式2:通过PowerShell对象转JSON(更稳妥)
先构造PowerShell哈希表结构,再通过内置命令转成标准JSON,完全避免手动写JSON的语法问题:
# 构造PowerShell层级对象 $bodyObj = @{ web = @{ redirectUris = @("https://signin.aws.amazon.com/saml") } identifierUris = @("https://signin.aws.amazon.com/saml") } # 转换为标准JSON,Depth参数防止嵌套层级过深被自动截断 $body = $bodyObj | ConvertTo-Json -Depth 3
修改完成后重新执行脚本即可正常调用接口。
内容的提问来源于stack exchange,提问作者Praveen sivadasan
相关产品推荐
相关产品推荐

