如何从Azure DevOps权限报告提取用户、团队权限并生成数据表?
提取Azure DevOps权限报告数据并生成数据表
步骤1:加载JSON报告到PowerShell对象
先将下载好的JSON文件转换为PowerShell可操作的对象:
# 替换为你的JSON文件实际路径 $permissionReport = Get-Content -Path "C:\downloads\azure-perms-report.json" | ConvertFrom-Json
步骤2:解析并提取目标数据
Azure DevOps权限报告的核心数据存储在entries数组中,每个条目包含主体(用户/团队)、资源(仓库)和权限配置信息。遍历条目并提取关键字段:
$processedData = $permissionReport.entries | ForEach-Object { # 提取仓库名称与ID(从resource字段取名称,token字段拆分取ID) $repoDetails = @{ RepoName = $_.resource.displayName RepoId = ($_.token -split "/")[-1] } # 识别主体类型(团队/组或独立用户) $subjectDetails = @{ SubjectType = if ($_.subject.isGroup) { "Team/Group" } else { "User" } SubjectName = $_.subject.displayName SubjectEmail = $_.subject.mailAddress SubjectId = $_.subject.id } # 遍历每个权限项,生成独立的权限记录 foreach ($perm in $_.permissions) { [PSCustomObject]@{ @subjectDetails @repoDetails PermissionName = $perm.permissionName PermissionState = switch ($perm.value) { 1 { "Allow" } 2 { "Deny" } 0 { "Not Set" } default { "Unknown" } } } } }
步骤3:生成并导出数据表
在控制台查看结构化表格
$processedData | Format-Table SubjectType, SubjectName, RepoName, PermissionName, PermissionState -AutoSize
导出为CSV(支持Excel直接打开编辑)
$processedData | Export-Csv -Path "C:\output\repo-permissions-summary.csv" -NoTypeInformation -Encoding UTF8
注意事项
- 如果你的JSON报告中
token或resource的结构与示例不同,需调整解析逻辑(比如部分token包含项目名称,可通过-split "/"拆分后提取对应片段)。 - 若需要将同一主体-仓库的所有权限合并为单行,可使用
Group-Object分组后拼接权限字段。
内容的提问来源于stack exchange,提问作者denim
相关产品推荐
相关产品推荐

