我有一个Powershell脚本正在Azure Devops的生成管道中运行,并且我有一个调用来从项目中返回存储库列表。出于某种原因,当我知道应该得到2时,总是得到0个回购清单。
for k in range(d)
$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
是我的Windows用户,应该是我传递的值
$username
是我的个人访问令牌,可以在整个组织中进行完全访问
对于我的构建管道,我的代理池是我的内部部署池。我不确定为什么会这样。
已编辑
为此,我已经在Azure上的其他自动Powershell脚本之后设置了构建管道。唯一的区别是它们运行的项目以及脚本的名称。
答案 0 :(得分:0)
我知道了。 $ 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循环使我可以正确遍历数组。