Bagaimana cara membuat daftar grup / pengguna yang memiliki izin ke repo proyek dengan Azure DevOps API?
Saya ingin memeriksa siapa yang memiliki izin untuk mengakses beberapa repo dalam proyek melalui REST API. Saya merujuk ke dokumentasinya, tetapi dapat menemukan apa pun.
Jawaban
Menggunakan modul AzurePipelinesPS PowerShell Anda dapat menjalankan perintah berikut untuk membuat laporan izin dan menyimpan file secara lokal. Di mana _yourSessionName_ adalah nama sesi Anda. Untuk mempelajari lebih lanjut tentang manajemen sesi dengan AzurePipelinesPS, Anda dapat meninjau dokumentasinya di sini .
Buat Laporan
Membuat laporan untuk repositori dalam proyek tim dengan _myTeamProjectName_ adalah nama proyek tim Anda dan _myRepoName_ adalah nama repositori Anda. Objek masukan ini dapat dimodifikasi untuk membuat semua jenis laporan izin. Lihat dokumentasinya di sini .
New-APPermissionReport -Session '_yourSessionName_' -InputObject @{
descriptors = @()
reportName = 'myFirstPermissionReport'
resources = @(
@{
resourceId = '_myTeamProjectName_/_myRepoName_'
resourceName = '_myRepoName_'
resourceType = 'repo'
}
)
}
Kembalikan Status Laporan
Mengembalikan informasi laporan untuk laporan pertama dalam daftar
$session = '_yourSessionName_' $reports = Get-APPermissionReportList -Session $session Get-APPermissionReport -Session $session -ReportId $reports[0].id
Simpan Laporan
Menyimpan laporan pertama dalam daftar ke file yang terletak di c: \ temp \ myReport.json
$session = '_yourSessionName_'
$reports = Get-APPermissionReportList -Session $session
Save-APPermissionReport -Session $session -ReportId $reports[0].id -OutputPath C:\temp\myReport.json
Jika Anda memiliki masalah dengan modul ini, silakan buka masalah pada proyek AzurePipelinesPS Github
Bagaimana cara membuat daftar grup / pengguna yang memiliki izin ke repo proyek dengan Azure DevOps API?
Untuk saat ini, saya khawatir tidak ada Rest API seperti itu untuk mendapatkan izin git repo untuk setiap Pengguna / Grup.
Meskipun metode tersebut tercantum dalam versi pratinjau Laporan Izin REST API - Daftar , tampaknya REST API seperti itu belum sepenuhnya diterapkan:

Semoga REST API ini akan segera dirilis.
Anda dapat memeriksa utas serupa ini dan utas ini untuk beberapa detail.
Ini adalah latihan 3 bagian untuk mendapatkan laporan ini: #Minta laporan:
$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
Saya telah menemukan itu terlalu lambat untuk tujuan saya. Saya punya proyek dengan 1300 item yang harus dicek satu per satu, sejauh ini sudah berjalan 27 jam dan saya perkirakan baru selesai akhir pekan ini. Data Sumber Daya hanya bisa satu. itu tidak mendukung kelipatan seperti Descriptor. Deskriptor tidak dapat menangani lebih dari 70. Tidak ada yang didokumentasikan.