จะแสดงรายการกลุ่ม / ผู้ใช้ที่มีสิทธิ์ในการ repo โครงการด้วย Azure DevOps API ได้อย่างไร
ฉันต้องการตรวจสอบว่าใครมีสิทธิ์เข้าถึง repos บางส่วนในโปรเจ็กต์ผ่าน REST API ฉันอ้างถึงเอกสาร แต่ไม่พบอะไรเลย
คำตอบ
การใช้โมดูล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
จะแสดงรายการกลุ่ม / ผู้ใช้ที่มีสิทธิ์ในการ repo โครงการด้วย Azure DevOps API ได้อย่างไร
ตอนนี้ฉันกลัวว่าจะไม่มี Rest API ดังกล่าวที่จะรับสิทธิ์ git repo สำหรับผู้ใช้ / กลุ่มแต่ละคน
แม้ว่าวิธีการที่มีการระบุไว้ในการแสดงตัวอย่างรุ่นREST API สิทธิ์รายงาน - รายชื่อมันก็ดูเหมือนว่าเช่น REST API ยังไม่ได้ดำเนินการอย่างเต็มที่:

REST API นี้จะเปิดตัวเร็ว ๆ นี้
คุณสามารถตรวจสอบเธรดที่คล้ายกันนี้และเธรดนี้เพื่อดูรายละเอียดบางอย่าง
นี่คือแบบฝึกหัด 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 ไม่มีสิ่งใดเป็นเอกสาร