求完整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等配置项集中定义,便于后续修改维护
- 修正读者组获取逻辑:使用
GroupEntitlementsAPI获取正确的组权限ID(而非Graph API的originId),通过组显示名称精准匹配读者组 - 用户匹配逻辑:遍历目标用户邮箱列表,从用户权限列表中匹配并提取用户ID,同时添加未找到用户的警告提示
- 批量添加逻辑:循环处理每个目标用户ID,调用PUT API完成添加操作,包含错误捕获与提示
- API版本统一:使用较新的
7.1-preview.1版本API,提升接口兼容性与稳定性
内容的提问来源于stack exchange,提问作者Abhishek
相关产品推荐
相关产品推荐

