如何列出组织、项目、azure devops 团队、DevOps 的存储库信息

问题描述 投票:0回答:1

我有多个 Azure DevOps 实例,每个实例都有多个组织,每个组织有多个项目,每个项目有多个团队和存储库。

我如何以编程方式连接到一个实例,并获取所有存储库的列表,最好是 csv 格式:

输出如: 组织项目团队回购

提前非常感谢

.GET https://dev.azure.com/fabrikam/_apis/git/repositories?api-version=6.1-preview.1

azure azure-devops azure-devops-rest-api
1个回答
0
投票

我如何以编程方式连接到一个实例,并获取所有存储库的列表,最好是 csv 格式

您可以使用以下 Rest API 来获取组织、项目、团队、存储库。

获取组织:帐户 - 列表

获取项目:项目 - 列表

获取存储库:存储库 - 列表

获取团队:团队 - 获取所有团队

我们可以使用 PowerShell 脚本运行 Rest API 来获取所有必需的信息。

这是例子:

$token = "PAT"

$GetProfile="https://app.vssps.visualstudio.com/_apis/profile/profiles/me?api-version=7.1-preview.3"

$token = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($token)"))

$response = Invoke-RestMethod -Uri $GetProfile -Headers @{Authorization = "Basic $token"} -Method Get -ContentType application/json

$publicAlias = $response.publicAlias

echo $publicAlias

$GetOrganizations= "https://app.vssps.visualstudio.com/_apis/accounts?memberId=$($publicAlias)&api-version=7.1-preview.1"

$response1 = Invoke-RestMethod -Uri $GetOrganizations -Headers @{Authorization = "Basic $token"} -Method Get -ContentType application/json

foreach($organizationObj in $response1.value)
{
   $organizationname= $organizationObj.accountName
   $GetProjects ="https://dev.azure.com/$($organizationname)/_apis/projects?api-version=7.1-preview.4" 
   $response2 = Invoke-RestMethod -Uri $GetProjects -Headers @{Authorization = "Basic $token"} -Method Get -ContentType application/json
   foreach($projectObj in $response2.value)
   {
      $projectname = $projectObj.name
      $GetRepos ="https://dev.azure.com/$($organizationname)/$($projectname)/_apis/git/repositories?api-version=6.1-preview.1"
      $response3 = Invoke-RestMethod -Uri $GetRepos -Headers @{Authorization = "Basic $token"} -Method Get -ContentType application/json
      foreach($repoObj in $response3.value)
      {
         $reponame = $repoObj.name
         $Output = New-Object -TypeName PSObject -Property @{
        organization = $organizationname
        project =$projectname
        repo = $reponame
       } | Select-Object organization, project,repo
    $Output | Export-Csv C:\repo2.csv -Append

      }
      

   }
   $Getteam="https://dev.azure.com/$($organizationname)/_apis/teams?api-version=6.0-preview.3"
   $response4 = Invoke-RestMethod -Uri $Getteam -Headers @{Authorization = "Basic $token"} -Method Get -ContentType application/json
   foreach($teamObj in $response4.value)
   {
     $teamname = $teamObj.name
     $teamprojectname =$teamobj.projectName
     $Output = New-Object -TypeName PSObject -Property @{
      organization = $organizationname
      project =$teamprojectname
      team = $teamname
       } | Select-Object organization, project,team
    $Output | Export-Csv C:\team1.csv -Append
   }

}

由于repos属于整个项目而不是单个团队,所以我建议你可以生成两个excel,一个输出所有repos,另一个输出所有团队。

PowerShell 脚本将生成两个 Excel 来输出所有存储库和团队。

注意:当您创建PAT来运行Rest API时,您需要使用所有可访问的组织PAT

结果:

© www.soinside.com 2019 - 2024. All rights reserved.