Извлечение информации о разрешениях из отчета о разрешениях, созданного в результате вызова DevOps API в PowerShell

Я загрузил отчет, содержащий информацию о разрешениях в формате JSON, с помощью PowerShell. Мне нужно извлечь из этого отчета сведения о команде и пользователе, а также разрешения, настроенные для каждого пользователя.

Конечная точка API, используемая для извлечения отчета о разрешениях каждого репозитория: "https://dev.azure.com/organizationname/_apis/permissionsreport?api-version=7.1-preview.1"

Как извлечь данные о команде и пользователе, а также разрешения, настроенные для каждого репозитория, из загруженного отчета и создать на его основе таблицу данных?

Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
0
0
68
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
  1. Нажмите «Загрузить подробный отчет» для каждого целевого репозитория.

  1. Запустите Отчет о разрешениях — Список, чтобы получить идентификатор отчета для каждого репозитория.

    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"

Выходной файл выглядит следующим образом:

Для нескольких репозиториев поместите все файлы Json в папку и прочитайте каждый файл Json внутри папки в самом внешнем цикле. Вы можете фильтровать пользователей или группы, отображаемые в таблице, в соответствии с вашими фактическими потребностями.

Спасибо, это очень помогло. Не могли бы вы помочь мне узнать, как отображать членов команд в DisplayName для каждого репозитория?

denim 16.04.2024 22:57

Вы можете запустить REST API Команды — Получить членов команды с расширенными свойствами, чтобы получить список участников конкретной команды по названию или идентификатору команды.

Ziyang Liu-MSFT 17.04.2024 08:25

Другие вопросы по теме