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

如何通过MS Graph/PowerShell获取ADO用户ID并导出用户项目至Excel

解决方案:获取Azure DevOps用户ID及所属项目并导出至Excel

1. 替代MS Graph,直接获取Azure DevOps用户ID

无需调用MS Graph,直接通过Azure DevOps的用户权限API即可获取包含用户ID的完整信息,API返回的每个条目里的id字段就是后续接口需要的用户ID,同时还包含用户的姓名、邮箱等基础信息。

2. 修正代码并实现遍历+导出逻辑

你的原存在几个问题:多余的-UseDefaultCredential(与PAT认证冲突)、变量引用错误、缺少遍历逻辑。以下是完整可运行的脚本:

完整PowerShell脚本

# 配置参数
$orgName = "adient"
$pat = "<你的个人访问令牌(PAT)>"
$outputExcelPath = ".\ADOUProjects.xlsx"

# 生成PAT认证头
$base64AuthInfo = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$pat"))
$authHeaders = @{Authorization = "Basic $base64AuthInfo"}

# 1. 获取组织内所有用户的权限列表(包含用户ID)
$allUsersUrl = "https://vsaex.dev.azure.com/$orgName/_apis/userentitlements?api-version=7.1-preview.1"
$allUserEntitlements = Invoke-RestMethod -Uri $allUsersUrl -Method Get -Headers $authHeaders

# 2. 遍历每个用户,收集其所属项目信息
$exportData = @()
foreach ($user in $allUserEntitlements.value) {
    $userId = $user.id
    $userDisplayName = $user.user.displayName
    $userEmail = $user.user.principalName

    # 获取当前用户的项目权限详情
    $userProjectsUrl = "https://vsaex.dev.azure.com/$orgName/_apis/userentitlements/$userId?api-version=7.1-preview.2"
    $userProjectDetails = Invoke-RestMethod -Uri $userProjectsUrl -Method Get -Headers $authHeaders

    # 提取所有所属项目名称,用逗号分隔
    $projectList = $userProjectDetails.projectEntitlements.projectRef.name -join ", "

    # 添加到导出数据集
    $exportData += [PSCustomObject]@{
        "用户ID"       = $userId
        "用户名"       = $userDisplayName
        "邮箱"         = $userEmail
        "所属项目列表" = $projectList
    }
}

# 3. 导出到Excel(需先安装ImportExcel模块)
# 若未安装模块,执行:Install-Module -Name ImportExcel -Scope CurrentUser -Force
$exportData | Export-Excel -Path $outputExcelPath -AutoSize -BoldTopRow -FreezeTopRow

Write-Host "数据导出完成,文件路径:$outputExcelPath"

3. 关键注意事项

  • 认证冲突:必须移除-UseDefaultCredential参数,PAT的Basic认证与默认凭据认证不能同时使用
  • API版本:使用较新的7.1-preview版本,确保接口兼容性和数据完整性
  • Excel依赖:脚本使用ImportExcel模块处理Excel导出,这是PowerShell生态中最便捷的Excel操作工具,未安装时需先执行安装命令
  • 数据处理:通过projectEntitlements.projectRef.name提取项目名称,多个项目用逗号拼接成字符串,便于Excel展示

内容的提问来源于stack exchange,提问作者Raviteja Atchuta

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 02:57:53