我正在尝试使用https://www.visualstudio.com/en-us/docs/integrate/api/build/definitions和PowerShell脚本中记录的REST API以编程方式更新Team Services构建定义中变量的值。
所以计划是使用GET读取定义,修改返回对象中的值,然后使用PUT更新定义。
我的问题是最后一步(PUT)失败并出现异常(似乎在服务器端)。即使我没有修改定义中的任何内容,也会抛出相同的异常。
因此,最简单的说法是PowerShell代码:
$definitionId = 27
$url = "https://imaginera.visualstudio.com/DefaultCollection/Fidelis/_apis/build/definitions/" + $definitionId + "?api-version=2.0"
# Read the build definition.
$definition = Invoke-RestMethod -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -Method Get -Uri $url
# Update the build definition.
Invoke-RestMethod -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -Method Put -Uri $url -Body (ConvertTo-Json $definition) -ContentType "application/json"
我得到的例外是:
Invoke-RestMethod : {"$id":"1","innerException":null,"message":"Value cannot be null.\r\nParameter name: definition.Options[0].Definition","typeName":"System.ArgumentNullException, mscorlib, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089","typeKey":"ArgumentNullException","errorCode":0,"eventId":0}
我认为我正在使用文档中描述的API,但我可能会遗漏一些内容。
答案 0 :(得分:5)
为-Depth
指定ConvertTo-Json
参数。