hsi*_*sim 3 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
Run Code Online (Sandbox Code Playgroud)
但是,该result值返回 azure 的登录页面,而不是我的存储库。如果我将相同的网址粘贴到浏览器中,我确实会得到好的页面。
我认为请求中传递了某种 cookie/AD 凭据,但我没有通过开发人员工具看到任何相关内容。
我尝试手动设置 WebClient 对象的凭据,如下所示:
#$creds = Get-Credential -UserName "User" -Message "Login"
#$WebClient.Credentials = $creds
#$WebClient.UseDefaultCredentials = $true
Run Code Online (Sandbox Code Playgroud)
但无济于事。我缺少什么?
我用来Invoke-RestMethod获取 Azure DevOps Rest API 响应,您需要使用个人访问令牌进行身份验证:
$token = "YOUR-PAT"
$base64Auth = [Convert]::ToBase64String([Text.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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1447 次 |
| 最近记录: |