从MSO租户批量导出6000+群组UPN的PowerShell实现方法求助
批量导出Microsoft 365租户群组UPN PowerShell实现方案
前置依赖
- 需安装
Microsoft Graph PowerShell模块,该模块原生支持超过千级数量的对象分页拉取,兼容6000+群组的导出需求 - 操作账号需具备租户全局读取者或群组管理员权限
操作步骤
1. 安装核心模块
使用管理员权限启动PowerShell终端,依次执行命令完成模块安装与导入:
Install-Module Microsoft.Graph -Scope CurrentUser -Force Import-Module Microsoft.Graph
2. 完成租户认证
执行认证命令,指定群组读取权限:
Connect-MgGraph -Scopes "Group.Read.All"
在弹出的认证窗口中输入有权限的账号完成登录。
3. 执行批量导出
运行以下脚本即可拉取全量群组的UPN属性,导出结果默认保存到桌面的MSO全量群组UPN.csv文件:
# 拉取租户内所有群组,仅加载必要属性提升拉取效率 $allGroups = Get-MgGroup -All -PageSize 999 -Property DisplayName,UserPrincipalName,Id # 构造导出对象 $exportData = $allGroups | Select-Object @{Name='群组名称';Expression={$_.DisplayName}},@{Name='群组UPN';Expression={$_.UserPrincipalName}},@{Name='群组ID';Expression={$_.Id}} # 导出到CSV $exportPath = "$env:USERPROFILE\Desktop\MSO全量群组UPN.csv" $exportData | Export-Csv -Path $exportPath -Encoding UTF8 -NoTypeInformation # 输出执行结果 Write-Host "导出完成,共处理 $($allGroups.Count) 个群组,文件保存路径:$exportPath"
异常处理
- 若安装模块提示无权,可将
-Scope CurrentUser改为-Scope AllUsers后重新执行 - 部分群组无UPN属性属于正常情况:仅启用邮件的安全组、Microsoft 365群组具备该属性,普通安全组、动态组无对应UPN
- 拉取超时可适当调低
-PageSize参数值,建议取值范围100~999
内容的提问来源于stack exchange,提问作者Woltrap
相关产品推荐
相关产品推荐

