Azure DevOps API를 사용하여 프로젝트 리포지토리에 대한 권한이있는 그룹 / 사용자를 나열하는 방법은 무엇입니까?
REST API를 통해 프로젝트의 일부 저장소에 액세스 할 수있는 권한이있는 사람을 확인하고 싶습니다. 문서를 참조했지만 무엇이든 찾을 수있었습니다.
답변
AzurePipelinesPS PowerShell 모듈을 사용하여 다음 명령을 실행하여 권한 보고서를 만들고 파일을 로컬에 저장할 수 있습니다. 여기서 _yourSessionName_은 세션의 이름입니다. AzurePipelinesPS를 사용한 세션 관리에 대한 자세한 내용은 여기 에서 설명서를 검토 할 수 있습니다 .
보고서 작성
_myTeamProjectName_은 팀 프로젝트의 이름이고 _myRepoName_은 저장소의 이름 인 팀 프로젝트의 리포지토리에 대한 보고서를 만듭니다. 이 입력 개체를 수정하여 모든 종류의 권한 보고서를 만들 수 있습니다. 여기 에서 설명서를 참조 하십시오 .
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 프로젝트 에서 문제를 열어 주시기 바랍니다.
Azure DevOps API를 사용하여 프로젝트 리포지토리에 대한 권한이있는 그룹 / 사용자를 나열하는 방법은 무엇입니까?
현재로서는 각 사용자 / 그룹에 대해 git repo 권한을 가져 오는 Rest API가 없습니다.
메소드가 미리보기 버전 REST API 권한 보고서-List에 나열되어 있지만 이러한 REST API가 아직 완전히 구현되지 않은 것 같습니다.
이 REST API는 곧 출시 될 예정입니다.
이 확인할 수 있습니다 유사한 스레드 와 스레드 몇 가지 세부 사항을.
다음은 이러한 보고서를 얻기위한 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와 같은 배수를 지원하지 않습니다. Descriptor는 70 개 이상을 처리 할 수 없습니다. 문서화 된 것은 없습니다.