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

求完整PowerShell脚本:通过API为用户分配Azure DevOps读者权限

批量将用户添加到Azure DevOps读者组的PowerShell脚本

以下是完善后的脚本,可实现通过Azure DevOps API批量将指定用户添加到组织读者组:

# 配置参数
$orgName = "你的组织名称"
$pat = "你的PAT令牌"
$demoUsers = @("sachintendulkar@yhi.com", "a-haadkjc.singh@yhi.com") # 目标用户邮箱列表

# 构建API请求头
$headers = @{
    Authorization = "Basic $([Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(":$pat")))"
}

# 1. 获取读者组的Group Entitlement ID
$groupsUrl = "https://vsaex.dev.azure.com/$orgName/_apis/groupentitlements?api-version=7.1-preview.1"
$groupsResponse = Invoke-RestMethod -Uri $groupsUrl -Headers $headers
$readersGroup = $groupsResponse.value | Where-Object {$_.group.displayName -eq "Readers"}
if (-not $readersGroup) {
    Write-Error "未找到读者组"
    exit 1
}
$readerGroupEntitlementId = $readersGroup.id
Write-Output "读者组ID: $readerGroupEntitlementId"

# 2. 获取所有用户权限信息,匹配目标用户并提取User ID
$usersUrl = "https://vsaex.dev.azure.com/$orgName/_apis/userentitlements?api-version=7.1-preview.1"
$usersResponse = Invoke-RestMethod -Uri $usersUrl -Headers $headers
$targetUserIds = @()

foreach ($userEmail in $demoUsers) {
    $user = $usersResponse.value | Where-Object {$_.user.principalName -eq $userEmail}
    if ($user) {
        $targetUserIds += $user.user.id
        Write-Output "找到目标用户: $userEmail,ID: $($user.user.id)"
    } else {
        Write-Warning "未找到用户: $userEmail"
    }
}

# 3. 批量将用户添加到读者组
foreach ($userId in $targetUserIds) {
    $addMemberUrl = "https://vsaex.dev.azure.com/$orgName/_apis/groupentitlements/$readerGroupEntitlementId/members/$userId?api-version=7.1-preview.1"
    try {
        $response = Invoke-RestMethod -Uri $addMemberUrl -Headers $headers -Method Put -Body "{}" -ContentType "application/json"
        Write-Output "成功添加用户ID $userId 到读者组"
    } catch {
        Write-Error "添加用户ID $userId 失败: $($_.Exception.Message)"
    }
}

关键修改说明

  • 参数标准化:将组织名称、PAT等配置项集中定义,便于后续修改维护
  • 修正读者组获取逻辑:使用GroupEntitlements API获取正确的组权限ID(而非Graph API的originId),通过组显示名称精准匹配读者组
  • 用户匹配逻辑:遍历目标用户邮箱列表,从用户权限列表中匹配并提取用户ID,同时添加未找到用户的警告提示
  • 批量添加逻辑:循环处理每个目标用户ID,调用PUT API完成添加操作,包含错误捕获与提示
  • API版本统一:使用较新的7.1-preview.1版本API,提升接口兼容性与稳定性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 18:53:28