Come elencare i gruppi / utenti che dispongono delle autorizzazioni per il repository del progetto con l'API Azure DevOps?

Aug 17 2020

Voglio controllare chi dispone delle autorizzazioni per accedere ad alcuni dei repository nel progetto tramite l'API REST. Ho fatto riferimento alla documentazione, ma sono riuscito a trovare qualsiasi cosa.

Risposte

Dejulia489 Aug 17 2020 at 15:30

Utilizzando il modulo AzurePipelinesPS PowerShell è possibile eseguire i seguenti comandi per creare un rapporto sulle autorizzazioni e salvare il file in locale. Dove _yourSessionName_ è il nome della tua sessione. Per ulteriori informazioni sulla gestione delle sessioni con AzurePipelinesPS, puoi consultare la documentazione qui .

Crea il rapporto

Crea un report per un repository in un progetto team dove _myTeamProjectName_ è il nome del progetto team e _myRepoName_ è il nome del tuo repository. Questo oggetto di input può essere modificato per creare tutti i tipi di rapporti sulle autorizzazioni. Consulta la documentazione qui .

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

Restituire lo stato del report

Restituisce le informazioni sul rapporto per il primo rapporto nell'elenco

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

Salva il rapporto

Salva il primo rapporto nell'elenco in un file situato in c: \ temp \ myReport.json

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

In caso di problemi con il modulo, non esitare ad aprire un problema nel progetto AzurePipelinesPS Github

1 LeoLiu-MSFT Aug 18 2020 at 03:32

Come elencare i gruppi / utenti che dispongono delle autorizzazioni per il repository del progetto con l'API Azure DevOps?

Per ora, temo che non esista tale API Rest per ottenere le autorizzazioni del repository git per ciascun utente / gruppo.

Sebbene i metodi siano elencati nella versione di anteprima Rapporto sulle autorizzazioni dell'API REST - Elenco , sembra che tale API REST non sia stata ancora completamente implementata:

Si spera che questa API REST venga rilasciata presto.

Puoi controllare questo thread simile e questo thread per alcuni dettagli.

user2197169 Oct 22 2020 at 20:50

Questo è un esercizio in 3 parti per ottenere questi rapporti: #Richiedi il rapporto:

 $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

Ho scoperto che è troppo lento per i miei scopi. Ho un progetto con 1300 articoli che devono essere controllati individualmente, finora, è in corso da 27 ore e mi aspetto che non sarà completato fino a questo fine settimana. I dati della risorsa possono essere solo uno. non supporta multipli come il descrittore Il descrittore non può gestirne più di 70. Niente di tutto ciò è documentato.