使用 PowerShell 将 Office 365 通讯组成员导出到 CSV
Office 365 通讯组(也称为通讯组列表)用于向人员列表(内部和外部用户)发送电子邮件或会议请求,而无需每次都单独添加电子邮件地址。当您需要向一群人广播信息时,例如“销售部门的人员”或“公司的所有人员”,分发组非常适合。此外,管理员可以根据需要将批量用户添加到通讯组。
如何获取通讯组成员?
找出谁是哪个通讯组的成员始终是一项乏味的任务。您可以通过 Microsoft 365 管理中心查看通讯组成员,但它是按用户群进行的。因此,您需要单击每个组才能查看其成员资格,这非常耗时。不要害怕!您的朋友 PowerShell 将为您提供救援。您可以使用 PowerShell 命令将通讯组列表成员导出到 csv。
如果您的通讯组具有动态成员(根据某些预定义条件自动分配到组的用户),您需要使用不同的 cmdlet 来获取动态通讯组成员。
使用 PowerShell 将 Office 365 通讯组列表成员导出为 CSV
我们编写了一个 PowerShell 脚本,用于将通讯组列表成员以及最必需的属性(例如组显示名称、组主 SMTP 地址、组别名、组类型、组所有者(管理人)、成员计数、成员、成员电子邮件、成员类型)导出到 CSV ,并且允许用户向通讯组发送电子邮件。
Exchange Online PowerShell cmdlet Get-DistributionGroup 用于列出租户中可用的所有通讯组,Get-DistributionGroupMember 用于列出组成员。 Export-CSV cmdlet 用于将报告导出到 CSV 文件。一个组可以有许多成员,将它们导出到一行中并不美观。
为了更好地了解您的通讯组成员资格,我们的脚本将提供两个输出文件。
- 通讯组总结报告
- 详细的分发组成员报告
下载脚本:GetDistributionGroupMembers
脚本亮点:
- 该脚本使用新式身份验证来连接到 Exchange Online。
- 允许您根据群组规模(即成员数量)过滤报告结果。
- 该脚本也可以使用启用 MFA 的帐户执行。
- 您可以选择“导出所有通讯组列表的成员”或将输入文件传递到“导出特定通讯组列表的成员”。
- 您可以根据群组是否接受来自外部发件人的邮件来过滤输出。
- 将允许的发件人列表导出到通讯组列表。
- 可以过滤输出以列出空组。即没有成员的分发组
- 将报告结果导出为 CSV。
- 您可以根据成员类型(例如用户邮箱、群组邮箱、共享邮箱、联系人等)获取成员计数。
- 在您确认后自动安装 EXO V2(如果尚未安装)。
- 该脚本调度程序友好。即,凭证可以作为参数传递,而不是保存在脚本内。
- 最重要的是,脚本将输出导出为格式良好的 2 个 CSV 文件。一份包含详细信息,另一份包含摘要信息。
Office 365 分发组摘要报告:
通讯组摘要报告具有以下属性。
- 组显示名称,
- 主 SMTP 地址,
- 组别名,
- 团体类型,
- 组所有者(管理者),
- 小组成员数,
- 按收件人类型划分的成员计数,
- 允许外部用户
- 允许的发件人(即通讯组的授权发件人)
- 从 Exchange 地址列表中隐藏(可选)
- 描述(可选)
- 创建时间(可选)
- DirSynEnabled(可选)
- 会员加入限制(可选)
- 会员离境限制(可选)
详细的 Office 365 分发组成员报告:
详细的 Office 365 通讯组成员资格报告具有以下属性:
- 组显示名称,
- 主 SMTP 地址,
- 组别名,
- 小组成员数,
- 小组成员,
- 成员主要 SMTP 地址
- 会员接收者类型
将通讯组列表成员导出为 CSV:
要导出所有 Office 365 通讯组列表和成员报告,请执行以下脚本
./GetDistributionGroupMembers.ps1上述格式适用于 MFA 和非 MFA 帐户。
释放该脚本的全部潜力
该脚本有许多内置参数,可根据您的要求过滤/自定义报告。我们在下面列出了一些主要用例。
- 获取单个/通讯组列表的成员。
- 获取具有超过“N”个成员的通讯组的成员。
- 获取空的通讯组。
- 导出允许外部用户发送消息的通讯组。
- 报告有权向通讯组列表发送电子邮件的人员。
- 使用多个参数,您可以获得更精细的报告。
- 可以使用启用 MFA 的帐户执行脚本。
- 可以通过显式传递凭据来调度脚本。
- 您可以向导出文件添加其他属性。
让我们详细检查一下用例。
获取单个/通讯组列表的成员
您可以使用 -GroupNamesFile 参数从名为“DistributionList”的输入列表中获取通讯组的成员.txt”并将所有成员资格导出为 CSV。
要获取特定通讯组列表的成员,请传递带有显示名称/别名/可分辨名称/规范 DN/电子邮件地址或组 GUID 的输入文件。
./GetDistributionGroupMembers.ps1 -GroupNamesFile C:/DistributionList.txtGroupNamesFile 必须遵循以下格式:组标识由换行符分隔,不带标题。
获取拥有超过“N”个成员的通讯组成员
要根据群组成员数量过滤结果,您可以使用 -MinGroupMembersCount 参数。即,您可以获得成员数量超过指定数量的组。
./GetDistributionGroupMembers.ps1 -MinGroupMembersCount 50上面的脚本报告了拥有超过 50 名成员的所有通讯组列表。
获取空通讯组
要获取空的通讯组(即没有成员的通讯组),请使用 -IsEmpty 执行脚本 参数。
./GetDistributionGroupMembers.ps1 -IsEmpty使用此过滤器,您可以删除租户中未使用的可用通讯组列表。
获取允许外部用户发送消息的通讯组列表
该值是从“RequireSenderAuthenticationEnabled”属性中检索的。它允许您限制谁可以向通讯组列表发送电子邮件。
使用 -ExternalSendersBlocked 参数,您可以根据传送选项过滤结果。即,您可以获得允许/拒绝外部用户向该组发送消息的通讯组列表。
要列出允许外部用户向该组发送消息的通讯组,请使用 -ExternalSendersBlocked $false 执行脚本
./GetDistributionGroupMembers.ps1 -ExternalSendersBlocked $False
要列出不允许外部用户向该组发送消息的通讯组,请使用 -ExternalSendersBlocked $true 执行脚本
./GetDistributionGroupMembers.ps1 -ExternalSendersBlocked $True获取通讯组的授权发件人
获取 Office 365 通讯组列表的授权发件人有点棘手,因为授权发件人是通过关联多个属性来检索的。您可以从 Get-DistributionGroup cmdlet 获取允许的发件人,属性为:
1. AcceptMessagesOnlyFromSendersOrMembers - 列出允许的发件人
2. RequireSenderAuthenticationEnabled - 这限制可以向通讯组发送电子邮件的发件人,即通讯组是否允许外部发件人或仅允许内部发件人。
如何获得允许的发件人?
- 如果允许的发件人列表具有值,则群组成员将仅接收来自这些发件人的邮件,并拒绝来自其他人的邮件。
- 当允许的发件人列表为空时,群组成员将根据“RequireSenderAuthenticationEnabled”接收来自每个人的消息。
为了简单起见,我们的“导出通讯组列表成员”脚本会导出通讯组以及授权发件人。
获取更详细的报告
您可以多个滤镜一起使用,< span style="color: #333333;"> 获取更精细的报告 。例如,您可以获取拥有超过 50 名成员的列表通讯组的成员
./GetDistributionGroupMembers.ps1 -GroupNamesFile C:\DistributionList.txt -MinGroupMembersCount 50安排“导出通讯组成员”PowerShell 脚本
您可以通过明确提及凭据来在任务计划程序中计划此脚本。
<Script Location>\.GetDistributionGroupMembers.ps1 -UserName <UserName> -Password <Password>要了解有关调度 Powershell 脚本的更多信息,请参阅我们的博客:使用任务计划程序调度 PowerShell 脚本。
如何在导出文件中添加更多属性?
要将以下属性添加到通讯组成员报告,请取消注释第 110 行和 112 行中的注释部分。
- HiddenFromAddressList (HiddenFromAddressListsEnabled) - 从全局地址列表 (GAL) 中隐藏组。
- 描述 - 有关组的简短信息。
- CreationTime (WhenCreated) - 组创建时间。
- DirSyncEnabled (IsDirSynced) - 组是否启用目录同步。
JoinGroupWithoutApproval (MemberJoinRestriction) - 显示是否需要所有者批准才能加入组。
- 开放 - 任何人都可以加入群组,无需经过群组所有者的批准。
- 关闭 - 成员只能由群组所有者添加。
LeaveGroupWithoutRestriction (MemberDepartRestriction) - 显示该组是否可以离开。
- 开放 - 任何人都可以离开群组,无需经过群组所有者的批准。
获取更详细的群组报告:
获得更详细的小组报告
团体类型
- 保安组
- 分布组
- 启用邮件的安全组
- Microsoft 365 组
- 动态通讯组
团体会员
- 直接会员
群组创建源码
- 通过 Teams 创建的组
您可以查看 AdminDroid Microsoft 365 报告和审核工具。
此外,AdminDroid 还提供1500+ 预构建报告和 20 个具有视觉吸引力的智能仪表板,让您一目了然地了解您的 Office 365 环境。该工具提供有关 Office 365 报告、审计、分析、使用统计、安全性和合规性等的报告。
此外,AdminDroid 完全免费提供 100 多个报告和一些仪表板。它包括有关用户、许可证、组、组成员、设备、登录活动、密码更改、许可证更改等的报告。免费版在自定义、计划和导出等报告功能上没有任何限制。为了满足您的 Azure AD 报告和审核需求,您可以下载 AdminDroid 提供的免费 Office 365 报告工具,看看它如何为您提供帮助。
如果您对脚本有任何疑问,请通过评论部分与我们联系。






