带有PowerShell的Microsoft 365分销小组成员向CSV出口

有很多分销组,我们喜欢吸引所有成员和所有者。我们可以单独浏览Microsoft 365 Admin Center中的组,但这需要很多时间。因此,让我们自动执行任务,并向所有成员,所有者和更多信息导出报告。在本文中,您将学习如何使用PowerShell脚本将Microsoft 365分发组成员批量导出到CSV文件。

要在Microsoft 365中找到所有分销组,请按照以下步骤:

  1. 登录到Microsoft Exchange Admin Center
  2. 点击收件人>组
  3. 单击组类型列出发行组

让我们看一下如何用PowerShell导出Microsoft 365分销组成员的下一步。

获取具有PowerShell脚本的Microsoft 365分销小组成员

Export-M365DGMEMBES.PS1 POWERSHELL将获得包括其成员在内的所有Microsoft 365分发组,并将其导出到CSV文件。

对于每个Microsoft 365分销组,它都会收集以下信息:

  1. DisplayName
  2. 描述
  3. 主要SMTPADDRESS
  4. 次级板块
  5. 别名
  6. grouptype
  7. 收件人
  8. 同步
  9. 成员
  10. 会员parmarysmtpaddress
  11. 会员类型
  12. 业主
  13. 隐藏的fromAddresslists
  14. 会员日常运行
  15. 成员驱虫
  16. 需要EnsenderAuthenticationEnabled
  17. 接受
  18. sendonbehalf
  19. 发送
  20. 当创建时
  21. 换人时

笔记:您想在Exchange Server中获取所有分销组成员的列表吗?阅读文章将分销小组成员带到CSV,并使用PowerShell。

建议阅读:

1。安装交换在线PowerShell模块

在我们可以进一步继续并获得所有分销组的Microsoft 365成员和所有者之前,我们需要安装Exchange Online PowerShell模块。

启动Windows PowerShell作为管理员,并在下面运行命令。

Install-Module -Name ExchangeOnlineManagement -Force

2。准备导出Microsoft 365分销组成员PowerShell脚本

(c :)驾驶:

  • 温度
  • 脚本

下载Export-M365DGMembers.PS1 PowerShell脚本并将其放入C:脚本文件夹。脚本将将CSV文件导出到C:温度文件夹。

确保文件未阻止以防止运行脚本时的错误。在运行PowerShell脚本时,请在文章中阅读更多信息。

另一个选择是将下面的代码复制并粘贴到记事本中。给它名字Export-M365DGMEMBERS.PS1并将其放在C:脚本文件夹。

<#
    .SYNOPSIS
    Export-M365DGMembers.ps1

    .DESCRIPTION
    Export Microsoft 365 Distribution Group Members to CSV file with PowerShell.

    .LINK
    www.alitajran.com/export-microsoft-365-distribution-group-members-to-csv-powershell/

    .NOTES
    Written by: ALI TAJRAN
    Website:    www.alitajran.com
    LinkedIn:   linkedin.com/in/alitajran

    .CHANGELOG
    V1.00, 03/21/2024 - Initial version
    V1.10, 04/20/2024 - Added MemberType property and report members on seperate row
#>

# CSV file export path
$Csvfile = "C:tempM365DGMembers.csv"

# Connect to Exchange Online PowerShell
Connect-ExchangeOnline

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

# Initialize a List to store the data
$Report = [System.Collections.Generic.List[Object]]::new()

# Set up the progress bar parameters
$totalGroups = $Groups.Count
$currentGroup = 0

# Loop through distribution groups and store custom objects in the array
foreach ($Group in $Groups) {

    # Update the progress bar
    $currentGroup++
    $status = "{0:N0}" -f ($currentGroup / $totalGroups * 100)

    $progressParams = @{
        Activity        = "Retrieving Group Members"
        Status          = "Processing group: $($group.DisplayName) - $currentGroup of $totalGroups : $status% completed"
        PercentComplete = ($currentGroup / $totalGroups) * 100
    }

    Write-Progress @progressParams

    # Retrieve group properties
    $Members = Get-DistributionGroupMember $Group.DistinguishedName -ResultSize Unlimited
    $Owner = $Group.ManagedBy | ForEach-Object { (Get-Recipient $_ -ErrorAction SilentlyContinue).DisplayName }
    $AcceptMessagesOnlyFromDisplayNames = $Group.AcceptMessagesOnlyFrom | ForEach-Object { (Get-Recipient $_).PrimarySmtpAddress }
    $GrantSendOnBehalfToDisplayNames = $Group.GrantSendOnBehalfTo | ForEach-Object { (Get-User $_ -ErrorAction SilentlyContinue).DisplayName }

    # Get SendAs permissions
    $SendAsPermissions = Get-RecipientPermission -Identity $Group.PrimarySmtpAddress
    $SendAsTrustees = $SendAsPermissions.Trustee

    # Create custom objects for each member
    foreach ($Member in $Members) {
        $ReportLine = [PSCustomObject]@{
            DisplayName                        = $Group.DisplayName
            Description                        = $Group.Description
            PrimarySmtpAddress                 = $Group.PrimarySmtpAddress
            SecondarySmtpAddress               = ($Group.EmailAddresses | Where-Object { $_ -clike "smtp*" } | ForEach-Object { $_ -replace "smtp:", "" }) -join ','
            Alias                              = $Group.Alias
            GroupType                          = $Group.GroupType
            RecipientType                      = $Group.RecipientType
            SyncedFromOnPremises               = $Group.IsDirSynced
            Member                             = $Member.DisplayName
            MemberPrimarySmtpAddress           = $Member.PrimarySmtpAddress
            MemberType                         = $Member.RecipientType
            Owners                             = $Owner -join ','
            HiddenFromAddressLists             = $Group.HiddenFromAddressListsEnabled
            MemberJoinRestriction              = $Group.MemberJoinRestriction
            MemberDepartRestriction            = $Group.MemberDepartRestriction
            RequireSenderAuthenticationEnabled = $Group.RequireSenderAuthenticationEnabled
            AcceptMessagesOnlyFrom             = $AcceptMessagesOnlyFromDisplayNames -join ','
            SendOnBehalf                       = $GrantSendOnBehalfToDisplayNames -join ','
            SendAs                             = $SendAsTrustees -join ','
            WhenCreated                        = $Group.WhenCreated
            WhenChanged                        = $Group.WhenChanged
        }
        $Report.Add($ReportLine)
    }
}

# Complete the progress bar
Write-Progress -Activity "Retrieving Group Members" -Completed

# Output the custom objects array, sort them, and display in a grid view
$Report | Sort-Object DisplayName | Out-GridView -Title "M365 Distribution Group Members"

# Export report to CSV file
$Report | Sort-Object DisplayName | Export-Csv -Path $Csvfile -NoTypeInformation -Encoding utf8
  • 第22行:编辑CSV文件路径

3。运行导出Microsoft 365分销组成员PowerShell脚本

获取所有Microsoft 365分发组,包括其成员和所有者,并将其导出到CSV文件。

运行以下命令以运行脚本导出M365DGMEMBES.PS1。

c:scripts.Export-M365DGMembers.ps1

4。打开Microsoft 365分销小组成员报告

导出M365DGMEMBES.PS1 POWERSHELL脚本将所有Microsoft 365分发组成员导出到CSV文件。

查找文件M365DGMEMBES.CSV在路径中C:温度

使用您喜欢的应用程序打开CSV文件。在我们的示例中,这是Microsoft Excel。

Microsoft 365分销小组成员和所有者报告看起来很棒!

结论

您学习了如何使用PowerShell将Microsoft 365分销小组成员导出到CSV。管理中心的导出并不能为您提供所需的所有属性。最好使用PowerShell脚本,因为您可以根据需要自定义它。

您喜欢这篇文章吗?您可能还会喜欢导出ENTRA ID应用程序注册证书和秘密到期报告。不要忘记关注我们并分享这篇文章。