¿Cómo enumerar los grupos / usuarios que tienen permisos para el repositorio del proyecto con la API de Azure DevOps?
Quiero verificar quién tiene permisos para acceder a algunos de los repositorios en el proyecto a través de la API REST. Me referí a la documentación, pero pude encontrar cualquier cosa.
Respuestas
Con el módulo AzurePipelinesPS PowerShell, puede ejecutar los siguientes comandos para crear un informe de permisos y guardar el archivo localmente. Donde _yourSessionName_ es el nombre de su sesión. Para obtener más información sobre la administración de sesiones con AzurePipelinesPS, puede revisar la documentación aquí .
Crear el informe
Crea un informe para un repositorio en un proyecto de equipo donde _myTeamProjectName_ es el nombre de su proyecto de equipo y _myRepoName_ es el nombre de su repositorio. Este objeto de entrada se puede modificar para crear todo tipo de informes de permisos. Consulte la documentación aquí .
New-APPermissionReport -Session '_yourSessionName_' -InputObject @{
descriptors = @()
reportName = 'myFirstPermissionReport'
resources = @(
@{
resourceId = '_myTeamProjectName_/_myRepoName_'
resourceName = '_myRepoName_'
resourceType = 'repo'
}
)
}
Devolver el estado del informe
Devuelve la información del informe para el primer informe de la lista.
$session = '_yourSessionName_' $reports = Get-APPermissionReportList -Session $session Get-APPermissionReport -Session $session -ReportId $reports[0].id
Guardar el informe
Guarda el primer informe de la lista en un archivo ubicado en c: \ temp \ myReport.json
$session = '_yourSessionName_'
$reports = Get-APPermissionReportList -Session $session
Save-APPermissionReport -Session $session -ReportId $reports[0].id -OutputPath C:\temp\myReport.json
Si tiene algún problema con el módulo, no dude en abrir un problema en el proyecto AzurePipelinesPS Github
¿Cómo enumerar los grupos / usuarios que tienen permisos para el repositorio del proyecto con la API de Azure DevOps?
Por ahora, me temo que no existe una API Rest para obtener permisos de repositorio de git para cada usuario / grupo.
Aunque los métodos se enumeran en la versión preliminar Informe de permisos de la API REST - Lista , parece que dicha API REST aún no se ha implementado por completo:

Se espera que esta API REST se lance pronto.
Puede consultar este hilo similar y este hilo para obtener algunos detalles.
Este es un ejercicio de 3 partes para obtener estos informes: #Solicite el informe:
$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
Lo encontré demasiado lento para mis propósitos. Tengo un proyecto con 1300 ítems que deben ser revisados individualmente, hasta el momento lleva 27 horas funcionando y espero que no esté terminado hasta este fin de semana. Los datos del recurso solo pueden ser uno. no admite múltiplos como el Descriptor El descriptor no puede manejar más de 70. Nada de eso está documentado.