出于开发目的,我们需要通过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
但无济于事。我想念什么?
答案 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