azure - Azure Devops API 使用 powershell 脚本获取所有项目、团队和成员
问题描述
我正在创建一个连接到 Azure Devops API 服务的 powershell 脚本,以获取所有项目、团队和团队成员。但是,我在团队分页方面遇到了一些问题,因为 API 只返回 1000 个结果。我正在使用查询的顶部和跳过参数来解决这个问题,但这不适用于我的脚本,这就是我所拥有的:
$Members = @()
$Organization = 'org'
$PAT = 'pat'
$AzureDevOpsAuthenicationHeader = @{Authorization = 'Basic ' + [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(":$($PAT)")) }
$UriOrganization = "https://dev.azure.com/$($Organization)/"
$top_param=1000
$skip_param=0
$uriProject = $UriOrganization + "_apis/projects"
$ProjectsResult = Invoke-RestMethod -Uri $uriProject -Method get -Headers $AzureDevOpsAuthenicationHeader
Foreach ($project in $ProjectsResult.value)
{
do
{
$uriTeams = $UriOrganization + "_apis/projects/$($project.id)/teams?$top=$($top_param)&$skip=$($skip_param)"
$TeamsResult = Invoke-RestMethod -Uri $uriTeams -Method get -Headers $AzureDevOpsAuthenicationHeader
Foreach ($team in $TeamsResult.value)
{
$uriTeamMembers = $UriOrganization + "_apis/projects/$($project.id)/teams/$($team.id)/members?$top=$($top_param)&$skip=$($skip_param)"
$TeamMembersResult = Invoke-RestMethod -Uri $uriTeamMembers -Method get -Headers $AzureDevOpsAuthenicationHeader
Foreach ($teamMember in $TeamMembersResult.value)
{
$Members += New-Object -TypeName PSObject -Property @{
ProjectID=$project.id
ProjectName=$project.name
TeamID=$team.id
TeamName=$team.name
TeamDescription=$team.description
MemberID=$teamMember.identity.id
MemberName=$teamMember.identity.displayName
MemberEmail=$teamMember.identity.uniqueName
}
}
}
$Members | ConvertTo-Csv | Out-File -FilePath "filepath\file.csv" -Append
$top_param=$top_param+1000
$skip_param=$skip_param+1000
}
while (1000 -lt $TeamsResult.count)
}
问题是我的脚本一遍又一遍地返回相同的结果,分页不起作用。我正在使用以下文档:
解决方案
检查这个 PowerShell 模块https://github.com/MethodsAndPractices/vsteam
Set-VSTeamAccount -Account <account> -PersonalAccessToken <PAT>
Get-VSTeamProject | % {
Set-VSTeamDefaultProject -Project $_
$_.name
Get-VSTeam | % {
Get-VSTeamMember -teamId $_.id
}
}
推荐阅读
- java - Gradle 战争因编译任务而失败
- android - 如何通过 Kotlin(android)中的 TCP 套接字发送?
- android - 有没有办法在一个 Activity 中同时使用多个 Libgdx 视图?
- angular - Flex 布局高度问题
- android - 启用无障碍服务后,无障碍事件仅发生一次
- java - 通过 Firebase 数据库中的实时 lat & lang 更改标记位置而不添加新的一个标记
- java - 如何在java中禁用HEAD请求?
- google-analytics - 将一个网站的数据发送到多个视图?
- php - 当我在 db 中上传文件时,我想为多个文件上传制作 laravel api,它在 db 中显示 []
- javascript - Google 地图:使用自定义标记和自定义地图样式生成 Web 嵌入代码?