จะแสดงรายการกลุ่ม / ผู้ใช้ที่มีสิทธิ์ในการ repo โครงการด้วย Azure DevOps API ได้อย่างไร

Aug 17 2020

ฉันต้องการตรวจสอบว่าใครมีสิทธิ์เข้าถึง repos บางส่วนในโปรเจ็กต์ผ่าน REST API ฉันอ้างถึงเอกสาร แต่ไม่พบอะไรเลย

คำตอบ

Dejulia489 Aug 17 2020 at 15:30

การใช้โมดูลAzurePipelinesPS PowerShell คุณสามารถเรียกใช้คำสั่งต่อไปนี้เพื่อสร้างรายงานการอนุญาตและบันทึกไฟล์ในเครื่อง โดยที่ _yourSessionName_ คือชื่อเซสชันของคุณ ต้องการเรียนรู้เพิ่มเติมเกี่ยวกับการจัดการเซสชั่นกับ AzurePipelinesPS คุณสามารถตรวจสอบเอกสารที่นี่

สร้างรายงาน

สร้างรายงานสำหรับที่เก็บในโปรเจ็กต์ทีมโดยที่ _myTeamProjectName_ คือชื่อของโปรเจ็กต์ทีมของคุณและ _myRepoName_ คือชื่อของที่เก็บของคุณ ออบเจ็กต์อินพุตนี้สามารถแก้ไขได้เพื่อสร้างรายงานสิทธิ์ทุกประเภท โปรดดูเอกสารที่นี่

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

ส่งคืนสถานะรายงาน

ส่งคืนข้อมูลรายงานสำหรับรายงานแรกในรายการ

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

บันทึกรายงาน

บันทึกรายงานแรกในรายการไปยังไฟล์ที่อยู่ที่ c: \ temp \ myReport.json

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

หากคุณมีปัญหาใด ๆ กับโมดูลโปรดอย่าลังเลที่จะเปิดปัญหาในโครงการ AzurePipelinesPS Github

1 LeoLiu-MSFT Aug 18 2020 at 03:32

จะแสดงรายการกลุ่ม / ผู้ใช้ที่มีสิทธิ์ในการ repo โครงการด้วย Azure DevOps API ได้อย่างไร

ตอนนี้ฉันกลัวว่าจะไม่มี Rest API ดังกล่าวที่จะรับสิทธิ์ git repo สำหรับผู้ใช้ / กลุ่มแต่ละคน

แม้ว่าวิธีการที่มีการระบุไว้ในการแสดงตัวอย่างรุ่นREST API สิทธิ์รายงาน - รายชื่อมันก็ดูเหมือนว่าเช่น REST API ยังไม่ได้ดำเนินการอย่างเต็มที่:

REST API นี้จะเปิดตัวเร็ว ๆ นี้

คุณสามารถตรวจสอบเธรดที่คล้ายกันนี้และเธรดนี้เพื่อดูรายละเอียดบางอย่าง

user2197169 Oct 22 2020 at 20:50

นี่คือแบบฝึกหัด 3 ส่วนเพื่อรับรายงานเหล่านี้: # ขอรายงาน:

 $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

ฉันพบว่ามันช้าเกินไปสำหรับจุดประสงค์ของฉัน ฉันมีโปรเจ็กต์ 1300 รายการที่ต้องตรวจสอบทีละรายการจนถึงตอนนี้มันทำงานมา 27 ชั่วโมงแล้วและฉันคาดว่ามันจะไม่แล้วเสร็จจนกว่าจะถึงสุดสัปดาห์นี้ ข้อมูลทรัพยากรสามารถเป็นได้เพียงข้อมูลเดียว ไม่สนับสนุนการทวีคูณเช่นตัวอธิบายตัวอธิบายไม่สามารถจัดการได้มากกว่า 70 ไม่มีสิ่งใดเป็นเอกสาร