在本地使用PowerShell来获取Azure DevOps分支上的最后一个内部版本ID

时间:2019-11-27 01:09:21

标签: powershell azure-devops azure-devops-rest-api

出于开发目的,我们需要通过Visual Studio在本地启动PowerShell脚本,其任务是获取特定分支的最后一个构建ID。

到目前为止,我已经基于此尝试了许多选择:

$WebClient = New-Object Net.WebClient
Write-Host "Downloading patches and binaries"

Write-Host "Get ID"

$url = "https://oldrepo.visualstudio.com/ProjectA/_apis/build/latest/14?branchName=master"
$result = $WebClient.DownloadString($url)

Write-Host $result

但是result值返回azure的登录页面,而不是我的存储库。但是,如果我在浏览器中粘贴相同的网址,则会得到不错的页面。

我想在请求中传递了某种cookie / AD凭证,但是我没有看到任何通过开发人员工具相关的东西。

我试图像这样手动设置凭据到WebClient对象:

#$creds = Get-Credential -UserName "User" -Message "Login"
#$WebClient.Credentials = $creds
#$WebClient.UseDefaultCredentials = $true

但无济于事。我想念什么?

1 个答案:

答案 0 :(得分:1)

我使用Invoke-RestMethod来获取Azure DevOps Rest API响应,并且您需要使用Personal Access Token进行身份验证:

$token = "YOUR-PAT"
$base64Auth = [Convert]::ToBase64String([Test.Encoding]::ASCII.GetBytes(("{0}:{1}" -f "",$token)))
$header = "@{Authorization=("Basic {0}" -f $base64Auth)
$url = "https://oldrepo.visualstudio.com/ProjectA/_apis/build/latest/14?branchName=master"
$result = Invoke-RestMethod -Uri $url -Method Get -ContentType application/json -Headers $header