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

使用PowerShell调用Graph API添加Intune合规策略时JSON报错求助

解决PowerShell调用Microsoft Graph API时的JSON格式错误问题

你遇到的"Provided JSON isn't in valid JSON format"和"Invalid JSON primitive: True"错误,大多是PowerShell里JSON字符串的写法不符合规范导致的,结合你的代码片段,我整理了几个关键修复点:

1. 修正Here-String的语法格式

你用@"定义JSON字符串的时候,犯了一个常见的PowerShell语法错误:@"后面不能直接跟空格或内容,必须换行,而且结尾的"@`也要单独占一行,前面不能有任何空格或字符。

错误写法:

$JSON_Android = @" { "@odata.type": "#microsoft.graph.androidCompliancePolicy", ... } "@

正确写法:

$JSON_Android = @"
{
  "@odata.type": "#microsoft.graph.androidCompliancePolicy",
  "displayName": "Google_Android_Device_Compliance",
  "passwordRequired": true,
  "passwordMinimumLength": 6,
  "passwordRequiredType": "devicePassword",
  "osMinimumVersion": "10.0"
}
"@

2. 统一JSON布尔值为小写

JSON规范里的布尔值必须是小写的true/false,而PowerShell里的布尔值是$True/$False(大写开头)。如果你的JSON里写了True,API会把它识别为无效的JSON原始值,这就是你看到"Invalid JSON primitive: True"的原因。

把所有布尔值改成小写即可,比如把"passwordRequired": True改成"passwordRequired": true。

3. 提前验证JSON格式

在调用API之前,先用PowerShell的ConvertFrom-Json命令验证你的JSON是否有效,这样能提前发现格式问题:

try {
    $JSON_Android | ConvertFrom-Json -ErrorAction Stop
    Write-Host "✅ JSON格式验证通过"
} catch {
    Write-Host "❌ JSON格式错误: $_"
}

4. 确保API请求头设置正确

调用Graph API时,必须指定Content-Type为application/json,否则API无法正确解析你的请求体。完整的调用示例如下:

# 假设你已经获取了有效的访问令牌$token
$uri = "https://graph.microsoft.com/v1.0/deviceManagement/deviceCompliancePolicies"

try {
    $response = Invoke-RestMethod -Uri $uri `
        -Method Post `
        -Headers @{Authorization = "Bearer $token"} `
        -Body $JSON_Android `
        -ContentType "application/json"
    
    Write-Host "合规策略创建成功: $($response.displayName)"
} catch {
    Write-Host "请求失败: $_"
}

按照上面的步骤调整后,应该就能解决你遇到的JSON格式问题了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:43:26