使用PowerShell+Graph API给Intune合规策略分配组遇400错误求助
Intune合规策略组分配PowerShell脚本400错误修复方案
以下是针对你遇到的Bad Request(400)错误的具体修复建议:
核心问题排查与修正
- 修正URL语法错误:原脚本中
$intuneUrl变量缺少开头的双引号,PowerShell无法正确识别字符串,这是基础语法问题。 - 修复JSON格式问题:
- JSON规范要求键值对必须使用双引号,原脚本用单引号会导致Graph API解析失败;
@odata.type格式错误,正确值应为#microsoft.graph.groupAssignmentTarget(单个#符号),而非##;- 新增分配时无需指定
id字段,该字段是现有分配的唯一标识,仅在更新已有分配时需要。
- 匹配正确的请求方法:首次给合规策略分配组时,应使用
POST方法;若要更新现有分配集合,再使用PATCH方法,错误的方法会触发400错误。
修正后的脚本示例
$headers = @{ "Authorization" = "Bearer $accessToken" "Content-Type" = "application/json" } # 替换xxx为你的合规策略ID $intuneUrl = "https://graph.microsoft.com/beta/deviceManagement/deviceCompliancePolicies/xxx/assignments" # 使用Here-String编写JSON,避免引号转义问题,同时保证格式正确 $body = @" { "assignments": [ { "target": { "@odata.type": "#microsoft.graph.groupAssignmentTarget", "groupId": "xxx" # 替换为目标Azure AD组ID } } ] } "@ # 首次分配用POST,更新现有分配则改为PATCH Invoke-RestMethod -Uri $intuneUrl -Method POST -Headers $headers -Body $body -ErrorAction Stop
额外检查项
- 确认
$accessToken拥有DeviceManagementConfiguration.ReadWrite.All权限,且令牌未过期; - 验证合规策略ID和组ID的准确性,确保ID对应资源在Azure AD/Intune中存在;
- 先调用
GET请求$intuneUrl查看现有分配,避免重复分配同一组导致错误。
内容的提问来源于stack exchange,提问作者Soly19
相关产品推荐
相关产品推荐

