powershell - Azure devops rest api 仅返回 100 个项目
问题描述
我正在尝试从我的组织中检索所有项目我有 300 个项目但 api 调用仅返回 100
我尝试将 $top 与 api 一起使用,然后它什么也不返回
这是我的脚本,可用于获取 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 它也没有返回任何内容
谢谢
解决方案
Azure devops rest api 仅返回 100 个项目
答案是使用指定$top
参数。
但是在powershell中使用这个参数时,我们需要注意转义$
by `而不是&。
那是因为在powershell中,单引号''
在任何情况下都只代表引号内的字符。换句话说,单引号内的内容不会被变量和转义字符替换。在双引号""
中,允许变量替换和字符转义。
当您使用双引号时BaseUrl
:</p>
$BaseUrl = "https://dev.azure.com/{organization_name}/_apis/projects?api-versions=5.0"
$
如果我们添加$top=300
而不是&
在那个 URL 中,我们需要转义字符。
所以,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'
在 PowerShell 中查看文档Escaping:</p>
PowerShell 转义字符是反引号“`”字符。
下面是我的测试结果:
推荐阅读
- python - Django allauth 不访问生产中的静态文件
- python - 嵌套列表的非递归遍历——在Python中构建类似的嵌套列表
- sql - 将表值函数从多行更改为内联
- haskell - 是否可以将 GADT 存储在 State monad 变压器中?
- sql - 如何在 SQL 中做到这一点?(在窗口上运行查询,而不仅仅是单个聚合)
- vue.js - 没有在 Vue 和 Vuex 中获取更新链接的数据
- excel - Excel 宏复制粘贴在右侧直到左侧单元格中的数据
- html - 显示:Flex 不在其下生成内容
- java - AutoValue 无法解析为类型 - Eclipse
- java - 如何将当前字符串格式化为日期/时间格式?