如何使用REST API更新Visual Studio Team Services构建定义?

时间:2017-03-13 13:53:06

标签: rest powershell azure-devops

我正在尝试使用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,但我可能会遗漏一些内容。

1 个答案:

答案 0 :(得分:5)

-Depth指定ConvertTo-Json参数。