Azure DevOps APIを使用してプロジェクトリポジトリへのアクセス許可を持つグループ/ユーザーを一覧表示するにはどうすればよいですか?
RESTAPIを介してプロジェクト内の一部のリポジトリにアクセスする権限を誰が持っているかを確認したいと思います。ドキュメントを参照しましたが、何でも見つかりました。
回答
使用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
モジュールに問題がある場合は、AzurePipelinesPSGithubプロジェクトで問題を開いてください。
Azure DevOps APIを使用してプロジェクトリポジトリへのアクセス許可を持つグループ/ユーザーを一覧表示するにはどうすればよいですか?
今のところ、各ユーザー/グループのgitリポジトリ権限を取得するようなRestAPIはありません。
メソッドはプレビューバージョンのRESTAPIアクセス許可レポート-リストにリストされていますが、そのようなRESTAPIはまだ完全には実装されていないようです。

このRESTAPIは間もなくリリースされることを願っています。
詳細については、この同様のスレッドとこのスレッドを確認できます。
これは、これらのレポートを取得するための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時間実行されており、今週末まで完了しないと予想しています。リソースデータは1つだけにすることができます。記述子のような倍数はサポートしていません。記述子は70を超える値を処理できません。そのいずれも文書化されていません。