如何使用Azure DevOps API列出有权访问项目存储库的组/用户?

问题描述

我想检查谁有权通过REST API访问项目中的某些回购协议。我参考了文档,但是什么都找不到。

解决方法

如何使用Azure DevOps API列出有权访问项目存储库的组/用户?

目前,恐怕还没有这样的Rest API来获取每个用户/组的git repo权限。

尽管这些方法在预览版本REST API Permissions Report - List中列出,但似乎尚未完全实现这样的REST API:

enter image description here

该REST API有望很快发布。

您可以检查similar threadthis thread以获得一些详细信息。

,

使用AzurePipelinesPS PowerShell模块,您可以运行以下命令来创建权限报告并将文件保存在本地。其中_yourSessionName_是会话的名称。要了解有关使用AzurePipelinesPS进行会话管理的更多信息,可以查看文档here

创建报告

为团队项目中的存储库创建一个报告,其中_myTeamProjectName_是您的团队项目的名称,而_myRepoName_是您的存储库的名称。可以修改此输入对象以创建各种权限报告。请参阅文档here

New-APPermissionReport -Session '_yourSessionName_' -InputObject @{
        descriptors = @()
        reportName = 'myFirstPermissionReport'
        resources = @(
            @{
                resourceId = '_myTeamProjectName_/_myRepoName_'
                resourceName = '_myRepoName_'
                resourceType = 'repo'
            }
        )
    }

返回报告状态

返回列表中第一个报告的报告信息

$session = '_yourSessionName_'
$reports = Get-APPermissionReportList -Session $session
Get-APPermissionReport -Session $session -ReportId $reports[0].id 

保存报告

将列表中的第一个报告保存到位于c:\ temp \ myReport.json的文件中

$session = '_yourSessionName_'
$reports = Get-APPermissionReportList -Session $session
Save-APPermissionReport -Session $session -ReportId $reports[0].id -OutputPath C:\temp\myReport.json

如果您对模块有任何疑问,请随时在AzurePipelinesPS Github project

上打开一个问题。 ,

这是获取这些报告的3个步骤: #请求报告:

 $uri= -join("https://dev.azure.com/",$Account,"/_apis/permissionsreport?api-version=6.1-preview.1")

        $Report=Invoke-RestMethod -Method Post -Uri $uri -Headers @{Authorization=("Basic {0}" -f $auth)} -ContentType "application/json" -Body $body
        $fileUri=-join($Report[0]._Link.href,"?api-version=6.0-preview.1")
        do{
            #Now wait for it to complete:
            sleep -Seconds 45
            $ReportObj=Invoke-RestMethod -Method get -Uri $Fileuri -Headers @{Authorization=("Basic {0}" -f $auth)} -ContentType "application/json"

        }while($ReportObj.reportStatus -ne "completedSuccessfully" -and $ReportObj.error -eq $null)
       #Now get the report
        $fileUri=-join($Report[0]._downloadLink.href,"?api-version=6.0-preview.1")
        $ReportObj=Invoke-RestMethod -Method get -Uri $Fileuri -Headers @{Authorization=("Basic {0}" -f $auth)} -ContentType "application/json"
#because this isn't designed to be read directly like I've done,you have to clean it up:
$ReportObj=$ReportObj.Replace("","") | ConvertFrom-Json

对于我的目的,我发现它太慢了。我有一个项目,其中有1300个项目需要单独检查,到目前为止,该项目已经运行了27个小时,我希望直到本周末才能完成。 资源数据只能是一个。它不支持Descriptor之类的倍数 描述符最多只能处理70个。 没有记录。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...