如何合并Azure DevOps CLI命令批量查询所有用户的仓库访问权限
实现方案
完全可以通过脚本实现批量查询需求,以下分别提供Windows平台常用的PowerShell脚本、Linux/macOS平台常用的Bash脚本,可直接修改配置后运行:
PowerShell 版本
# 替换为你的Azure DevOps组织地址 $orgUrl = "https://dev.azure.com/你的组织名称" $jsonOutputPath = "用户仓库权限汇总.json" $csvOutputPath = "用户仓库权限汇总.csv" # 1. 获取所有用户的邮箱列表 $userEmailList = az devops user list --org $orgUrl --query members[].emailid -o tsv # 2. 遍历用户批量查询权限 $permissionResult = @() foreach ($email in $userEmailList) { Write-Host "正在查询用户 $email 的权限..." $userDetail = az devops user show --org $orgUrl --user $email --query "{Username:user.name, Email:user.mail, AccessLevel:accessLevel, RepoList:repo.access}" | ConvertFrom-Json $permissionResult += $userDetail } # 3. 导出为JSON格式 $permissionResult | ConvertTo-Json -Depth 10 | Out-File $jsonOutputPath -Encoding UTF8 Write-Host "JSON结果已保存至 $jsonOutputPath" # 可选:导出为CSV表格格式(仓库列表用分号分隔方便查看) $permissionResult | Select-Object Username, Email, AccessLevel, @{Name="可访问仓库";Expression={$_.RepoList -join '; '}} | Export-Csv -Path $csvOutputPath -NoTypeInformation -Encoding UTF8 Write-Host "CSV表格已保存至 $csvOutputPath"
Bash 版本
# 替换为你的Azure DevOps组织地址 ORG_URL="https://dev.azure.com/你的组织名称" JSON_OUTPUT="用户仓库权限汇总.json" CSV_OUTPUT="用户仓库权限汇总.csv" # 1. 获取所有用户的邮箱列表 user_email_list=$(az devops user list --org "$ORG_URL" --query members[].emailid -o tsv) # 2. 遍历用户批量查询权限,导出JSON echo "[" > "$JSON_OUTPUT" first_item=1 for email in $user_email_list; do echo "正在查询用户 $email 的权限..." if [ $first_item -eq 0 ]; then echo "," >> "$JSON_OUTPUT" fi az devops user show --org "$ORG_URL" --user "$email" --query "{Username:user.name, Email:user.mail, AccessLevel:accessLevel, RepoList:repo.access}" >> "$JSON_OUTPUT" first_item=0 done echo "]" >> "$JSON_OUTPUT" echo "JSON结果已保存至 $JSON_OUTPUT" # 可选:导出为CSV格式(需提前安装jq工具处理JSON) if command -v jq &> /dev/null; then echo "Username,Email,AccessLevel,可访问仓库" > "$CSV_OUTPUT" jq -r '.[] | [.Username, .Email, .AccessLevel, (.RepoList | join("; "))] | @csv' "$JSON_OUTPUT" >> "$CSV_OUTPUT" echo "CSV表格已保存至 $CSV_OUTPUT" else echo "未检测到jq工具,跳过CSV导出,如需导出请先安装jq" fi
注意事项
- 运行前请先执行
az login登录Azure账号,若未安装Azure DevOps扩展,可先执行az extension add --name azure-devops安装 - 如果组织内用户量较大,可以在循环中添加1~2秒的延迟,避免触发API限流
- 如果运行时
repo.access返回为空,可以根据az devops user show的真实返回结构调整query参数的取值路径
内容的提问来源于stack exchange,提问作者Bhuvi
相关产品推荐
相关产品推荐

