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

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

作者:精品下载站 日期:2024-12-14 18:31:24 浏览:14 分类:玩电脑

使用 PowerShell 将通讯组成员导出到 CSV


如何将通讯组成员导出到 CSV 文件?我们想要拥有所有通讯组和该组所有成员的列表。在本文中,您将了解如何使用 PowerShell 脚本将通讯组成员批量导出到 CSV 文件。

介绍

通讯组或通讯组列表是出现在组织地址簿中的两个或更多人员的集合。当电子邮件发送到通讯组时,它会发送到所有组成员。

您想要查看哪些用户是通讯组(也称为通讯组列表)的成员。 Export-DistributionGroups.ps1 PowerShell 脚本将针对每个通讯组运行。

这些团体是:

  • 分布组

  • 安全组(启用邮件的安全组)

使用 PowerShell 脚本获取通讯组成员

Export-DistributionGroups.ps1 PowerShell 脚本适用于:

  • 本地交换

  • 交换混合

  • 在线交流

该脚本将收集每个通讯组的以下信息:

  1. 显示名称

  2. 主SMTP地址

  3. 次要 SMTP 地址

  4. 别名

  5. 组类型

  6. 收件人类型

  7. 会员

  8. 成员主要SMTP地址

  9. 管理人

  10. 从地址列表中隐藏

  11. 会员加入限制

  12. 会员离境限制

  13. 要求发件人身份验证已启用

  14. 仅接受来自的消息

  15. 授予代表发送

  16. 笔记

准备导出通讯组 PowerShell 脚本

下载 Export-DistributionGroups.ps1 PowerShell 脚本并将其放置在 C:\scripts 文件夹中。如果您没有脚本文件夹,请创建一个。确保检查文件是否已解锁,以防止运行脚本时出现任何错误。请阅读文章运行 PowerShell 脚本时出现未数字签名错误来了解更多信息。

另一种选择是将以下代码复制并粘贴到记事本中。将其命名为 Export-DistributionGroups.ps1 并将其放置在 C:\scripts 文件夹中。

# CSV file export path
$Csvfile = "C:\scripts\ExportDGs.csv"

# Get all distribution groups
$Groups = Get-DistributionGroup -ResultSize Unlimited

# Loop through distribution groups
$Groups | ForEach-Object {

    $GroupDN = $_.DistinguishedName
    $DisplayName = $_.DisplayName
    $PrimarySmtpAddress = $_.PrimarySmtpAddress
    $SecondarySmtpAddress = $_.EmailAddresses | Where-Object {$_ -clike "smtp*"} | ForEach-Object {$_ -replace "smtp:",""}
    $GroupType = $_.GroupType
    $RecipientType = $_.RecipientType
    $Members = Get-DistributionGroupMember $GroupDN -ResultSize Unlimited
    $ManagedBy = $_.ManagedBy
    $Alias = $_.Alias
    $HiddenFromAddressLists = $_.HiddenFromAddressListsEnabled
    $MemberJoinRestriction = $_.MemberJoinRestriction 
    $MemberDepartRestriction = $_.MemberDepartRestriction
    $RequireSenderAuthenticationEnabled = $_.RequireSenderAuthenticationEnabled
    $AcceptMessagesOnlyFrom = $_.AcceptMessagesOnlyFrom
    $GrantSendOnBehalfTo = $_.GrantSendOnBehalfTo
    $Notes = (Get-Group $GroupDN)

    # Create objects
    [PSCustomObject]@{
        DisplayName                        = $DisplayName
        PrimarySmtpAddress                 = $PrimarySmtpAddress
        SecondarySmtpAddress               = ($SecondarySmtpAddress -join ',')
        Alias                              = $Alias
        GroupType                          = $GroupType
        RecipientType                      = $RecipientType
        Members                            = ($Members.Name -join ',')
        MembersPrimarySmtpAddress          = ($Members.PrimarySmtpAddress -join ',')
        ManagedBy                          = ($ManagedBy.Name -join ',')
        HiddenFromAddressLists             = $HiddenFromAddressLists
        MemberJoinRestriction              = $MemberJoinRestriction 
        MemberDepartRestriction            = $MemberDepartRestriction
        RequireSenderAuthenticationEnabled = $RequireSenderAuthenticationEnabled
        AcceptMessagesOnlyFrom             = ($AcceptMessagesOnlyFrom.Name -join ',')
        GrantSendOnBehalfTo                = ($GrantSendOnBehalfTo.Name -join ',')
        Notes                              = $Notes.Notes
    }

# Export report to CSV file
} | Sort-Object DisplayName | Export-CSV -Path $Csvfile -NoTypeInformation -Encoding UTF8 #-Delimiter ";"
  • 第 2 行:根据需要编辑 CSV 文件路径。

运行导出通讯组 PowerShell 脚本

该脚本适用于 Exchange 本地、Exchange 混合和 Exchange Online。在运行脚本之前,您必须连接正确的工具:

  • 本地 Exchange/Exchange 混合:以管理员身份运行 Exchange 命令行管理程序。

  • Exchange Online (Microsoft 365/Office 365):以管理员身份运行 PowerShell 并连接到 Exchange Online PowerShell。

更改脚本文件夹的路径。运行 PowerShell 脚本将所有通讯组和成员导出到 CSV 文件。

[PS] C:\>cd C:\scripts

[PS] C:\scripts>.\Export-DistributionGroups.ps1

Export-DistributionGroups 脚本开始扫描组织中的通讯组。这可能需要一些时间。完成后,将创建一个列表并将其导出到脚本文件夹中,名称为 ExportDGs.csv

结果分发组导出 CSV 文件

让我们通过以下路径查看 CSV 导出文件:C:\scripts\。您应该会看到 ExportDGs.csv 文件。

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

使用您喜欢的应用程序打开 ExportDGs.csv。例如,使用 Microsoft Excel。如果您不需要所有信息,可以删除这些列。您可以按 DisplayName、GroupType、HiddenFromAddressLists 或任何其他类型对列进行排序和筛选。根据您的需要调整信息。

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

这是否有助于您使用 PowerShell 将通讯组成员导出到 CSV 文件?

了解更多:在 Exchange Hybrid 中创建通讯组 »

结论

您了解了如何使用 PowerShell 将通讯组成员导出到 CSV。在 Exchange 管理中心导出到 CSV 文件不会为您提供与 PowerShell 一样多的信息。使用 PowerShell,您可以拥有自定义通讯组报告。使用 Export-DistributionGroups PowerShell 脚本。

您喜欢这篇文章吗?您可能还喜欢使用 PowerShell 从组中删除用户。不要忘记关注我们并分享这篇文章。

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

取消回复欢迎 发表评论:

关灯