首页 > 解决方案 > 使用 Powershell 从 Azure Devops 检索信息

问题描述

我正在尝试使用带有 Powershell 的 Azure Devops API 自动部署 Azure Devops 中的版本。我能够检索上一个版本定义,但我无法提取特定环境的版本。

我希望检索最后一个“产品”版本以获取“版本 ID”,然后使用 HTTP“补丁”请求将该版本部署到 UAT 或 DEV。

我可以手动点击一个 URL(下面的示例),它为我提供了 DEV 的最后一个版本(definitionEnvironmentId=1),我知道我可以轻松地将环境 ID 更改为“12”以进行生产,但我想得到这个通过 API 调用。

https://{redacted url}/{redacted}/{redacted}/_apis/release/deployments?api-version=6.0&definitionId=1&definitionEnvironmentId=1&$top=1

任何想法,如果这是可能的,因为我找不到任何信息?

标签: powershellapiazure-devops

解决方案


您使用的是正确的部署 - 列出Rest api。您没有通过 powershell 从 api 调用中获得任何信息的原因是您没有转义url$中参数的特殊字符。$top

$是 powershell 中的一个特殊字符。您应该通过在 url 中添加反引号 '`' 来转义它。见下文:

#add ` to $top parameter
$url = "https://{redacted url}/_apis/release/deployments?definitionId=3&definitionEnvironmentId=5&`$top=1&api-version=6.0"

$connectionToken="PAT"

$base64AuthInfo= [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($connectionToken)"))

$response= Invoke-RestMethod -Uri $url -Headers @{authorization = "Basic $base64AuthInfo"} -Method Get

$releaseId = $response.value[0].release.id

推荐阅读