如何用PowerShell导出特定DL的所有者及成员列表至CSV
导出指定通讯组的所有者及成员到CSV文件
步骤1:连接Exchange Online PowerShell
先运行以下命令完成Exchange Online的身份验证,MFA用户会自动弹出验证窗口:
Connect-ExchangeOnline
步骤2:执行导出脚本
运行以下PowerShell脚本,它会自动筛选名称以classification或C&T开头的通讯组,收集每组的核心信息并导出到CSV文件:
# 设置输出路径,可根据需要修改 $outputPath = "C:\Temp\DL_Owners_Members.csv" # 自动创建输出目录(如果不存在) $dirPath = Split-Path -Path $outputPath -Parent if (-not (Test-Path -Path $dirPath)) { New-Item -Path $dirPath -ItemType Directory -Force | Out-Null } # 初始化结果存储数组 $dlResults = @() # 获取符合命名规则的通讯组 $targetDLs = Get-DistributionGroup -Filter "(Name -like 'classification*') -or (Name -like 'C&T*')" # 循环处理每个通讯组 foreach ($dl in $targetDLs) { # 获取组所有者(仅筛选邮箱/邮件用户类型) $owners = Get-DistributionGroupMember -Identity $dl.Identity -RecipientTypeDetails Mailbox, MailUser | Select-Object -ExpandProperty PrimarySmtpAddress $ownerList = if ($owners) { $owners -join ";" } else { "无所有者" } # 获取所有组成员 $members = Get-DistributionGroupMember -Identity $dl.Identity | Select-Object -ExpandProperty PrimarySmtpAddress $memberList = if ($members) { $members -join ";" } else { "无成员" } # 将数据整理为结构化对象 $dlResults += [PSCustomObject]@{ 通讯组名称 = $dl.Name 通讯组邮箱地址 = $dl.PrimarySmtpAddress 所有者列表 = $ownerList 成员列表 = $memberList } } # 导出到CSV(UTF8编码避免中文乱码) $dlResults | Export-Csv -Path $outputPath -NoTypeInformation -Encoding UTF8
关键说明:
- 筛选逻辑:通过
-Filter参数精准匹配名称以指定前缀开头的通讯组 - 格式优化:用分号分隔多个所有者/成员,确保CSV单元格内容整洁,不会自动换行
- 编码处理:指定
-Encoding UTF8解决导出后中文乱码问题 - 权限要求:需要拥有Exchange Online的通讯组查看权限(至少为
View-Only Recipients角色)
内容的提问来源于stack exchange,提问作者Kamal
相关产品推荐
相关产品推荐

