You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何合并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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 00:36:04