Bagaimana cara membuat daftar grup / pengguna yang memiliki izin ke repo proyek dengan Azure DevOps API?

Aug 17 2020

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

Dejulia489 Aug 17 2020 at 15:30

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

1 LeoLiu-MSFT Aug 18 2020 at 03:32

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.

user2197169 Oct 22 2020 at 20:50

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.