当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 使用 PowerShell 将 Office 365 通讯组成员导出到 CSV

作者:精品下载站 日期:2024-12-14 08:25:05 浏览:13 分类:玩电脑

使用 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(可选)
  • 会员加入限制(可选)
  • 会员离境限制(可选)

[玩转系统] 使用 PowerShell 将 Office 365 通讯组成员导出到 CSV

详细的 Office 365 分发组成员报告:

详细的 Office 365 通讯组成员资格报告具有以下属性:

  • 组显示名称,
  • 主 SMTP 地址,
  • 组别名,
  • 小组成员数,
  • 小组成员,
  • 成员主要 SMTP 地址
  • 会员接收者类型

[玩转系统] 使用 PowerShell 将 Office 365 通讯组成员导出到 CSV

将通讯组列表成员导出为 CSV:

要导出所有 Office 365 通讯组列表和成员报告,请执行以下脚本

./GetDistributionGroupMembers.ps1

上述格式适用于 MFA 和非 MFA 帐户。

释放该脚本的全部潜力

该脚本有许多内置参数,可根据您的要求过滤/自定义报告。我们在下面列出了一些主要用例。

  • 获取单个/通讯组列表的成员。
  • 获取具有超过“N”个成员的通讯组的成员。
  • 获取空的通讯组。
  • 导出允许外部用户发送消息的通讯组。
  • 报告有权向通讯组列表发送电子邮件的人员。
  • 使用多个参数,您可以获得更精细的报告。
  • 可以使用启用 MFA 的帐户执行脚本。
  • 可以通过显式传递凭据来调度脚本。
  • 您可以向导出文件添加其他属性。

让我们详细检查一下用例。

获取单个/通讯组列表的成员

您可以使用 -GroupNamesFile 参数从名为“DistributionList”的输入列表中获取通讯组的成员.txt”并将所有成员资格导出为 CSV。

要获取特定通讯组列表的成员,请传递带有显示名称/别名/可分辨名称/规范 DN/电子邮件地址或组 GUID 的输入文件。

./GetDistributionGroupMembers.ps1 -GroupNamesFile C:/DistributionList.txt

GroupNamesFile 必须遵循以下格式:组标识由换行符分隔,不带标题。

[玩转系统] 使用 PowerShell 将 Office 365 通讯组成员导出到 CSV

获取拥有超过“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”接收来自每个人的消息。

为了简单起见,我们的“导出通讯组列表成员”脚本会导出通讯组以及授权发件人。

获取更详细的报告

您可以多个滤镜一起使用, 获取更精细的报告 。例如,您可以获取拥有超过 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 创建的组
  • 通过 SharePoint Online 创建的组
  • 通过 Yammer 创建的组
  • 群组成员变更
  • 团体使用
  • 基于上次活动日期的非活动组
  • 您可以查看 AdminDroid Microsoft 365 报告和审核工具。

    此外,AdminDroid 还提供1500+ 预构建报告和 20 个具有视觉吸引力的智能仪表板,让您一目了然地了解您的 Office 365 环境。该工具提供有关 Office 365 报告、审计、分析、使用统计、安全性和合规性等的报告。

    [玩转系统] 使用 PowerShell 将 Office 365 通讯组成员导出到 CSV

    [玩转系统] 使用 PowerShell 将 Office 365 通讯组成员导出到 CSV

    [玩转系统] 使用 PowerShell 将 Office 365 通讯组成员导出到 CSV

    [玩转系统] 使用 PowerShell 将 Office 365 通讯组成员导出到 CSV

    此外,AdminDroid 完全免费提供 100 多个报告和一些仪表板。它包括有关用户、许可证、组、组成员、设备、登录活动、密码更改、许可证更改等的报告。免费版在自定义、计划和导出等报告功能上没有任何限制。为了满足您的 Azure AD 报告和审核需求,您可以下载 AdminDroid 提供的免费 Office 365 报告工具,看看它如何为您提供帮助。

    如果您对脚本有任何疑问,请通过评论部分与我们联系。

    您需要 登录账户 后才能发表评论

    取消回复欢迎 发表评论:

    关灯