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

PowerShell调用Azure DevOps REST API更新工作项提示需传入有效patch文档

问题原因

报错核心是请求体转换出的JSON不符合JSON Patch规范要求的数组格式,由PowerShellConvertTo-Json的管道枚举特性导致:

  • 脚本中定义的$body为单元素数组,本身符合JSON Patch的操作集合要求
  • 使用$body | ConvertTo-Json管道写法时,PowerShell管道会自动展开数组元素,ConvertTo-Json实际接收到的输入是单个哈希表对象,而非包含1个操作的数组
  • 最终生成的JSON是无外层方括号的单个对象,Azure DevOps REST API无法识别为合法Patch文档,直接抛出参数校验错误
修复方案

直接将数组作为ConvertTo-Json的输入参数传入,不要通过管道传递,同时建议将序列化深度设置为10,避免后续复杂值出现序列化截断:
将原脚本最后一行替换为:

$response = Invoke-RestMethod -Uri $url -Method PATCH -Headers $headers -Body (ConvertTo-Json -InputObject $body -Depth 10)

如果你使用PowerShell 7及以上版本,也可以保留管道写法,添加-AsArray参数强制输出数组格式:

$response = Invoke-RestMethod -Uri $url -Method PATCH -Headers $headers -Body ($body | ConvertTo-Json -Depth 10 -AsArray)
格式校验

发起请求前可以先打印转换后的JSON确认结构,合法的请求体JSON必须是外层带方括号的数组,格式如下:

[
  {
    "op": "add",
    "path": "/fields/Microsoft.VSTS.Build.IntegrationBuild",
    "value": "v.09-09-1999"
  }
]

如果输出没有外层方括号,说明序列化格式仍有问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 06:24:29