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

标签 rest powershell azure-devops

我正在尝试使用记录在 https://www.visualstudio.com/en-us/docs/integrate/api/build/definitions 的 REST API 以编程方式更新 Team Services 构建定义中变量的值。和一个 PowerShell 脚本。

所以计划是使用 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"

我得到的异常(exception)是:
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,但我可能遗漏了一些东西。

最佳答案

指定一个 -Depth ConvertTo-Json 的参数.

关于rest - 如何使用 REST api 更新 Visual Studio Team Services 构建定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42765348/

相关文章:

rest - REST 应用程序的后端异常处理 - 我们应该返回 4XX 错误还是带有错误标记的 200

django - 如何在 Django-rest-auth 中验证请求?

powershell - 抑制 Import-PSSession 的输出

angular - 在 Azure 中部署 Angular 应用程序并使用 VSTS 配置 CI/CD

azure - 如何将 Azure 文件共享添加为 Azure Pipeline 中的卷

rest - 如何从 fetch 向我的 go API 发出 PUT 请求?

c# - 如何使 .NET Web Api 仅对我的应用程序私有(private)

sql-server - 如何在 Powershell 中实际取消设置(设置为 Nothing)COM 对象属性?

sql - SQL 查询返回什么到 PowerShell 变量中?

azure - 如何重用 Azure 中不同管道的工件