从 PowerShell 中的 DevOps API 调用生成的权限报告中提取权限信息

问题描述 投票:0回答:1

我已使用 PowerShell 下载了一份包含 JSON 格式的权限信息的报告。我需要从此报告中提取团队和用户详细信息以及为每个用户配置的权限。

用于提取每个存储库的权限报告的API端点是: “https://dev.azure.com/organizationname/_apis/permissionsreport?api-version=7.1-preview.1”

如何从下载的报告中提取团队和用户详细信息以及为每个存储库配置的权限,并从中生成数据表?

azure powershell azure-devops
1个回答
0
投票
  1. 针对每个目标存储库单击 下载详细报告

  1. 运行Permissions Report - List以获取每个存储库的报告ID。

    GET https://dev.azure.com/{organization}/_apis/permissionsreport?api-version=7.1-preview.1

  2. 运行权限报告下载 - 下载以下载报告。

    GET https://dev.azure.com/{organization}/_apis/permissionsreport/{id}/download?api-version=7.1-preview.1

  3. 运行以下 PowerShell 脚本来生成表。

# Load the JSON file
$report = Get-Content -Path '{Path to your json file}' | ConvertFrom-Json

# Create an empty array to hold the result
$result = @()

foreach ($item in $report) {
    $displayName = $item.DisplayName
    foreach ($permission in $item.Permissions) {
        # Create a custom object for each permission
        $obj = New-Object PSObject
        $obj | Add-Member -MemberType NoteProperty -Name "DisplayName" -Value $displayName
        $obj | Add-Member -MemberType NoteProperty -Name "PermissionName" -Value $permission.PermissionName
        $obj | Add-Member -MemberType NoteProperty -Name "EffectivePermission" -Value $permission.EffectivePermission
        # Add the custom object to the result array
        $result += $obj
    }
}

# Output the result as a table
$result | Format-Table -AutoSize | Out-File -FilePath "output.txt"

输出文件如下所示:

对于多个repos,将所有Json文件放入文件夹中,并在最外层循环中读取文件夹内的每个Json文件。您可以根据实际需要过滤表格中显示的用户或组。

© www.soinside.com 2019 - 2024. All rights reserved.