如何使用Powershell查询指定用户作为所有者的所有Teams团队列表
实现步骤与可用脚本
前置准备
- 首先安装最新版本Microsoft Teams PowerShell模块,以管理员权限启动PowerShell后执行:
Install-Module -Name MicrosoftTeams -Force -AllowClobber - 导入模块并连接到你的Teams环境:
Import-Module MicrosoftTeams Connect-MicrosoftTeams
执行连接命令后会弹出身份验证窗口,使用有管理员权限的账号登录即可。
核心查询脚本
以下脚本可以直接筛选出指定用户作为所有者的所有Teams:
# 替换为目标用户的用户主体名称,例如zhangsan@contoso.com $targetOwnerUPN = "目标用户的UPN" # 获取租户内所有Teams $allTeams = Get-Team # 遍历筛选所有者包含目标用户的Teams $ownedTeams = foreach ($team in $allTeams) { # 读取当前Team的所有所有者 $teamOwners = Get-TeamUser -GroupId $team.GroupId -Role Owner # 判断目标用户是否在所有者列表内 if ($teamOwners.User -contains $targetOwnerUPN) { $team } } # 控制台输出结果 $ownedTeams | Select-Object DisplayName, GroupId, Visibility, Archived | Format-Table -AutoSize # 可选:将结果导出为CSV文件保存 # $ownedTeams | Export-Csv -Path "C:\指定路径\用户所属所有者Teams列表.csv" -NoTypeInformation -Encoding UTF8
大租户优化方案(Teams数量>1000时使用)
如果你的租户内Teams数量较多,上述遍历方案执行速度较慢,可以使用Microsoft Graph PowerShell实现直接过滤,大幅提升查询效率:
- 安装Microsoft Graph PowerShell模块:
Install-Module Microsoft.Graph -Force -AllowClobber - 连接Graph并授权:
Connect-MgGraph -Scopes "Group.Read.All", "User.Read.All" - 执行查询:
# 替换为目标用户的用户主体名称 $targetOwnerUPN = "目标用户的UPN" # 获取目标用户的ID $targetUserId = (Get-MgUser -UserId $targetOwnerUPN).Id # 直接过滤出所有者包含目标用户的Teams对应组 $ownedTeams = Get-MgGroup -Filter "groupTypes/any(c:c eq 'Unified') and resourceProvisioningOptions/Any(x:x eq 'Team') and owners/any(o:o/id eq '$targetUserId')" # 输出结果 $ownedTeams | Select-Object DisplayName, Id, Visibility
注意事项
- 执行操作的账号需要持有全局管理员、Teams管理员或Teams服务管理员权限,否则无法读取所有Teams的所有者信息
- 如果提示命令不存在,可先执行
Update-Module MicrosoftTeams更新模块到最新版本 - 上述脚本返回结果仅包含目标用户作为所有者的Teams,不会返回用户仅作为成员加入的Teams
内容的提问来源于stack exchange,提问作者Niels Meulemans
相关产品推荐
相关产品推荐

