【问题标题】:Retrieving info from Azure Devops with Powershell使用 Powershell 从 Azure Devops 检索信息
【发布时间】:2020-10-19 13:25:45
【问题描述】:

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

我希望检索最后一个“prod”版本以获取“版本 ID”,然后使用 HTTP“PATCH”请求将该版本部署到 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

如果我找不到任何信息,有什么想法吗?

【问题讨论】:

标签: powershell api azure-devops


【解决方案1】:

您使用的是正确的Deployments - List 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

【讨论】:

  • 非常感谢!我通过添加 '$test = "$"+"top"+"=1" 走了很长的路,然后将其添加到网址的末尾,但是添加您建议的反勾号效果更好。
猜你喜欢
  • 2023-02-09
  • 1970-01-01
  • 2019-11-12
  • 1970-01-01
  • 2015-01-06
  • 2022-11-02
  • 2016-11-07
  • 1970-01-01
  • 2019-01-16
相关资源
最近更新 更多