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

如何批量获取所有用户及其所属Microsoft Teams团队信息?

批量获取所有用户及其所属Teams团队的方法

可以通过PowerShell结合Microsoft Graph模块实现批量查询,以下是具体方案:

前置条件

  • 已安装Microsoft Graph PowerShell模块:Install-Module Microsoft.Graph -Force -AllowClobber
  • 拥有足够权限:需要User.Read.All和Group.Read.All权限(Teams团队本质是Microsoft 365组,因此需组读取权限)

实现脚本

# 连接Microsoft Graph并申请所需权限
Connect-MgGraph -Scopes "User.Read.All", "Group.Read.All"

# 获取所有用户,仅保留需要的核心属性
$allUsers = Get-MgUser -All -Property DisplayName, UserPrincipalName, Id | Select-Object DisplayName, UserPrincipalName, Id

# 初始化结果存储数组
$results = @()

# 遍历每个用户,获取其所属Teams团队
foreach ($user in $allUsers) {
    Write-Host "正在处理用户:$($user.DisplayName)"
    
    # 获取用户加入的所有Teams团队,仅提取团队显示名称
    $teams = Get-MgUserJoinedTeam -UserId $user.Id -All -Property DisplayName | Select-Object DisplayName

    # 处理无团队的用户
    if ($teams.Count -eq 0) {
        $results += [PSCustomObject]@{
            用户显示名称 = $user.DisplayName
            用户邮箱     = $user.UserPrincipalName
            团队显示名称 = "无所属团队"
        }
    }
    else {
        # 为每个团队生成一条关联记录
        foreach ($team in $teams) {
            $results += [PSCustomObject]@{
                用户显示名称 = $user.DisplayName
                用户邮箱     = $user.UserPrincipalName
                团队显示名称 = $team.DisplayName
            }
        }
    }
}

# 控制台输出结果
$results | Format-Table -AutoSize

# 可选:导出结果到CSV文件(方便后续分析)
$results | Export-Csv -Path "用户Teams团队列表.csv" -Encoding UTF8 -NoTypeInformation

# 断开与Microsoft Graph的连接
Disconnect-MgGraph

优化说明

  1. 分页自动处理:通过-All参数自动适配Graph API的分页限制,确保能获取所有用户及单用户超过200个的团队数据
  2. 精简属性请求:仅获取必要的用户和团队属性,减少数据传输量,提升查询效率
  3. 错误扩展处理:可按需添加try/catch块处理个别用户的查询异常,示例:
foreach ($user in $allUsers) {
    Write-Host "正在处理用户:$($user.DisplayName)"
    try {
        $teams = Get-MgUserJoinedTeam -UserId $user.Id -All -Property DisplayName | Select-Object DisplayName
        # 原有的记录生成逻辑...
    }
    catch {
        Write-Warning "处理用户$($user.DisplayName)时出错:$_"
        $results += [PSCustomObject]@{
            用户显示名称 = $user.DisplayName
            用户邮箱     = $user.UserPrincipalName
            团队显示名称 = "查询失败:$($_.Exception.Message)"
        }
    }
}
  1. 大数量场景优化:如果用户规模达数千级,可改用ForEach-Object -Parallel并行处理,但需添加适当延迟(如Start-Sleep -Milliseconds 500)避免触发Graph API限流机制

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 23:35:08