Come elencare i gruppi / utenti che dispongono delle autorizzazioni per il repository del progetto con l'API Azure DevOps?
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
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
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.
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.