Azure DevOps Rest Api 以获取具有延续令牌的所有项目
Azure DevOps Rest Api to get all projects with continuation token
我正在尝试使用 Azure DevOps Rest Api.
通过 PowerShell 获取我们在 Azure DevOps 中的所有项目的列表
但是,当我 运行 脚本时,它一直返回 100 个项目。当我添加延续令牌时,它会循环并 returns 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 个项目一遍又一遍地使用延续令牌。
仍然不确定为什么 do while
循环不起作用,但我只使用 while
在下面循环。
$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 {
$Uri = "https://dev.azure.com/$Org/_apis/projects?continuationToken=$ContinuationToken&api-version=4"
$ProjSets = Invoke-WebRequest -Uri $Uri -Method Get -ContentType "application/json" -Headers $header
$continuationToken = $ProjSets.Headers.'x-ms-continuationtoken'
$ProjectSet = $projsets.content | ConvertFrom-Json
$projects = $ProjectSet.value.name
while ($ContinuationToken -ne $null)
{
$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 = $ProjSets.content | ConvertFrom-Json
$projects += $ProjectSet.value.name
$global:org_project_names = $projects
write-host "Total number of projects = $($projects.count)"
}
}
您可以使用 $top
和 continuationToken
对 Azure Git 参考文献进行分页。这是文档:
https://docs.microsoft.com/en-us/rest/api/azure/devops/git/refs/list?view=azure-devops-rest-6.0
我正在尝试使用 Azure DevOps Rest Api.
通过 PowerShell 获取我们在 Azure DevOps 中的所有项目的列表但是,当我 运行 脚本时,它一直返回 100 个项目。当我添加延续令牌时,它会循环并 returns 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 个项目一遍又一遍地使用延续令牌。
仍然不确定为什么 do while
循环不起作用,但我只使用 while
在下面循环。
$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 {
$Uri = "https://dev.azure.com/$Org/_apis/projects?continuationToken=$ContinuationToken&api-version=4"
$ProjSets = Invoke-WebRequest -Uri $Uri -Method Get -ContentType "application/json" -Headers $header
$continuationToken = $ProjSets.Headers.'x-ms-continuationtoken'
$ProjectSet = $projsets.content | ConvertFrom-Json
$projects = $ProjectSet.value.name
while ($ContinuationToken -ne $null)
{
$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 = $ProjSets.content | ConvertFrom-Json
$projects += $ProjectSet.value.name
$global:org_project_names = $projects
write-host "Total number of projects = $($projects.count)"
}
}
您可以使用 $top
和 continuationToken
对 Azure Git 参考文献进行分页。这是文档:
https://docs.microsoft.com/en-us/rest/api/azure/devops/git/refs/list?view=azure-devops-rest-6.0