首页 > 解决方案 > 用于获取存储库列表的 Azure REST API 返回 0 个存储库

问题描述

我有一个在 Azure Devops 的构建管道中运行的 Powershell 脚本,并且我有一个调用来从项目中返回一个存储库列表。出于某种原因,当我知道我应该得到 2 个时,我总是得到一个 0 个 repos 的列表。

$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $username,$testpat)))
$repositories = (Invoke-WebRequest -Uri https://dev.azure.com/$organization/$project/_apis/git/repositories?api-version=5.1 -Proxy http:\\webproxy.testcomp.ca:1080 -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -ProxyUseDefaultCredentials).Content | ConvertFrom-Json | Select-Object -ExpandProperty value
Write-Host "New repos length: " $repositories.Length

$username是我的 Windows 用户,应该是我传递的值 $testpat是我的个人访问令牌,它在整个组织中具有完全访问权限

至于我的构建管道,我的代理池是我的本地池。我不确定为什么会这样。

已编辑

除此之外,我在 Azure 上的其他自动化 Powershell 脚本之后设置了我的构建管道。唯一的区别是它们运行的​​项目和脚本的名称。

标签: restazure-devops

解决方案


我想到了。$repositories.Length 没有给我数组的实际长度。

$repositories = (Invoke-WebRequest -Uri https://dev.azure.com/$organization/$project/_apis/git/repositories?api-version=5.1 -Proxy http://webproxy.testcomp.ca:1080 -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -ProxyUseDefaultCredentials).Content | ConvertFrom-Json | Select-Object -ExpandProperty value

$repositories | ForEach-Object -Process {
}

这个 ForEach 循环允许我正确地循环遍历数组。


推荐阅读