Office 365:使用 PowerShell 将通讯组列表成员导出到 CSV
要求:将 Office 365 通讯组列表成员导出为 CSV。
如何在 Office 365 中将通讯组成员导出到 CSV?
Office 365 提供了一系列工具和功能来帮助组织管理其电子邮件通信和协作需求。通讯组(也称为通讯组列表)就是其中之一,非常适合向多个收件人发送电子邮件,而无需每次都单独添加他们的电子邮件地址。通常,用于向一组员工广播信息,例如销售部门的员工或公司的所有员工。
作为管理员,您可能需要将通讯组的成员导出到 CSV 文件以用于各种目的,例如报告、备份、还原或审核。尽管您可以在 Outlook 中展开任何通讯组列表以获取其成员,但这可能不会为您提供所需格式的成员列表。在本文中,我们将讨论如何使用 PowerShell 将 Office 365 通讯组的成员导出到 CSV 文件。
从 Microsoft 365 管理中心导出通讯组
您可以按照以下步骤将通讯组详细信息导出到 Office 365 中的 CSV:
将包含通讯组属性(如组 ID、名称、别名、组主 SMTP 地址、组别名、成员计数、允许的发件人等)的 CSV 文件导出到并保存在“下载”文件夹中,其中包含通讯组的所有详细信息组。您还可以使用 Exchange 管理中心执行相同的操作。
但等一下!导出的文件中的会员信息在哪里?嗯,管理中心导出不提供每个组的成员,但它只提供组信息。
如何使用 Outlook 导出通讯组列表的成员?
您可以借助 Outlook 和 Microsoft Excel 导出通讯组列表的成员。具体方法如下:
- 打开 Outlook 并开始一封新邮件。
- 在“收件人”字段中,输入要导出的通讯组列表的名称 >> 单击“检查名称”按钮以验证通讯组列表的名称。
- 单击“加号”按钮展开通讯组列表 >> 将“收件人”列表中的所有用户复制到剪贴板。
- 现在,打开 Microsoft Excel。单击“粘贴”按钮下拉>>选择“使用文本导入向导...”
- 选择“分隔符”选项 >> 单击“下一步”>> 将分隔符设置为“分号”并完成向导。这会将每个成员的姓名和电子邮件粘贴到每列中。
- 选择所有列并复制数据>>打开一个新工作表>>单击“粘贴”按钮下拉菜单>>选择“选择性粘贴”。
- 在“选择性粘贴”对话框中,选中“转置”复选框,然后单击“确定”。
- 就这样!现在,您可以通过“文件”>>“另存为”>>在“另存为文件类型”中选择 CSV,将此 Excel 保存为 CSV。
PowerShell 将通讯组列表成员导出到 CSV
让我们看看如何在 Office 365 中使用 PowerShell 将通讯组成员导出到 CSV。此 PowerShell 脚本连接到 Exchange Online,检索通讯组成员,选择其显示名称和主 SMTP 地址、收件人类型,然后将它们导出到以下位置的 CSV 文件:指定的路径。请记住,您需要安装 Exchange Online PowerShell 模块并拥有访问 Exchange Online 的权限才能使用 Get-DistributionGroupMember cmdlet。有关使用 PowerShell 使用 Exchange Online 的详细信息,请参阅帖子:如何使用 PowerShell 连接到 Exchange Online?
运行以下命令导出通讯组成员:
#Parameters
$DistributionList = "SalesManagers@Crescent.com" # Group-Name or Group Email
$CSVFilePath = "C:\Temp\DL-Members.csv"
Try {
#Connect to Exchange Online
Connect-ExchangeOnline -ShowBanner:$False
#Get Distribution List Members and Exports to CSV
Get-DistributionGroupMember -Identity $DistributionList -ResultSize Unlimited | Select Name, PrimarySMTPAddress, RecipientType | Export-Csv $CSVFilePath -NoTypeInformation
}
Catch {
write-host -f Red "Error:" $_.Exception.Message
}
这将检索名为“SalesManagers@Crescent.com”的通讯组成员,并将结果导出到 C:\temp 目录中名为“DL-Members.csv”的 CSV 文件。 Export-CSV cmdlet 中的 -NoTypeInformation 参数从 CSV 文件中排除类型信息。
使用 PowerShell 导出所有通讯组列表和成员
要将所有通讯组及其成员导出到 CSV 文件,请使用以下 PowerShell 脚本:
#Parameters
$CSVFilePath = "C:\Temp\DL-Members.csv"
Try {
#Connect to Exchange Online
Connect-ExchangeOnline -ShowBanner:$False
#Get all Distribution Lists
$Result=@()
$DistributionGroups = Get-DistributionGroup -ResultSize Unlimited
$GroupsCount = $DistributionGroups.Count
$Counter = 1
$DistributionGroups | ForEach-Object {
Write-Progress -Activity "Processing Distribution List: $($_.DisplayName)" -Status "$Counter out of $GroupsCount completed" -PercentComplete (($Counter/$GroupsCount)*100)
$Group = $_
Get-DistributionGroupMember -Identity $Group.Name -ResultSize Unlimited | ForEach-Object {
$member = $_
$Result += New-Object PSObject -property @{
GroupName = $Group.Name
GroupEmail = $Group.PrimarySmtpAddress
Member = $Member.Name
EmailAddress = $Member.PrimarySMTPAddress
RecipientType= $Member.RecipientType
}
}
$Counter++
}
#Get Distribution List Members and Exports to CSV
$Result | Export-CSV $CSVFilePath -NoTypeInformation -Encoding UTF8
}
Catch {
write-host -f Red "Error:" $_.Exception.Message
}
最后,您可以验证通讯组成员是否已成功导出到 CSV 文件。使用 Microsoft Excel 或任何其他电子表格程序打开导出的 CSV 文件。该文件应包含通讯组名称、组电子邮件、成员名称、电子邮件等列。您还可以选择包含其他属性,例如组类型、组所有者等。
结论
总之,本文介绍了如何在 Office 365 中使用 PowerShell cmdlet 将通讯组成员导出到 CSV。PowerShell 提供了一个强大的工具,用于自动执行 Office 365 中的管理任务,将通讯组成员导出到 CSV 只是您可以执行的众多任务之一使用 PowerShell 实现自动化。按照以下步骤将通讯组成员导出到 CSV 文件以用于报告或审核目的。


