【发布时间】:2020-01-18 01:35:16
【问题描述】:
我正在尝试使用 Azure DevOps Rest Api 获取我们在带有 PowerShell 的 Azure DevOps 中的所有项目的列表。
但是,当我运行脚本时,它会不断返回 100 个项目。当我添加延续令牌时,它会循环并返回 SAME 100 个项目 4 次。所以总共给了我400个项目。我们目前有 385 个项目。
$Org = "ORGNAME"
$personalToken = "MYTOKEN"
###################################################
Write-Host "Initialize authentication context" -ForegroundColor Yellow
$token =[System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($personalToken)"))
$header = @{authorization = "Basic $token"}
$projects = $null
function get_projects {
do
{
$uri="https://dev.azure.com/$Org/_apis/projects?continuationToken=$ContinuationToken&api-version=5.1"
$ProjSets=Invoke-WebRequest -Uri $Uri -Method Get -ContentType "application/json" -Headers $header
$continuationToken = $ProjSets.Headers.'x-ms-continuationtoken'
$ProjectSet=$projset.content | ConvertFrom-Json
$projects+=$ProjectSet.value
} while ($continuationToken)
write-host "$continuationToken" -ForegroundColor Cyan
$projects.name
$projects.count
}
get_projects
我希望看到 $projects.count 等于我在我的组织中拥有的项目总数,在我的情况下是 385。我似乎无法理解我哪里出错了,为什么它给了我相同的 100 个项目一遍又一遍地使用延续令牌。
【问题讨论】:
标签: powershell azure-devops azure-devops-rest-api