Azure devops rest api returns 只有 100 个项目

Azure devops rest api returns only 100 projects

我正在尝试从我的组织中检索所有项目 我有 300 个项目,但 api 调用 returns 只有 100

我尝试将 $top 与 api 一起使用,然后它 returns 什么都没有

这是我的脚本,可用于获取 100 个项目并转换为 csv 文件,但我需要此 csv 文件中所有 300 个项目的详细信息 -

connectionToken = ""
$BaseUrl = "https://dev.azure.com/{organization_name}/_apis/projects?api- 
versions=5.0"
$base64AuthInfo = 
[System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes
(":$($connectionToken)"))

$ProjectInfo = Invoke-RestMethod -Uri $BaseUrl -Headers @{authorization = 
"Basic $base64AuthInfo"} - Method Get

$ProjectDetails = $ProjectInfo | ConvertTo-Json -Depth 100 | out-file 
"/list.json"

$ProjectList = Get-Content "/list.json" -Raw | ConvertFromJson | select - 
Expand value | Export-CSV "list.csv"

我也试过使用 invoke-webrequest 它也 returns 没什么

谢谢

Azure devops rest api returns only 100 projects

答案是使用指定的 $top 参数。

但是在powershell中使用这个参数的时候需要注意把$转义成`而不是&.

那是因为在powershell中,单引号''无论如何都只代表引号内的字符。也就是说,单引号内的内容不会被替换为变量和转义字符。在双引号""中,允许变量替换和字符转义。

当你用双引号加上BaseUrl时:

$BaseUrl = "https://dev.azure.com/{organization_name}/_apis/projects?api-versions=5.0"

如果我们在 URL.

中添加 $top=300 而不是 &,我们需要转义字符 $

所以,BaseUrl 应该是:

$BaseUrl = "https://dev.azure.com/{organization_name}/_apis/projects?`$top=300&api-version=5.0"

或者您可以对 URL:

使用单引号
$BaseUrl = 'https://dev.azure.com/{organization_name}/_apis/projects?$top=300&api-version=5.0'

查看文档Escaping in PowerShell

The PowerShell escape character is the backtick "`" character.

下面是我的测试结果: