有很多分销组,我们喜欢吸引所有成员和所有者。我们可以单独浏览Microsoft 365 Admin Center中的组,但这需要很多时间。因此,让我们自动执行任务,并向所有成员,所有者和更多信息导出报告。在本文中,您将学习如何使用PowerShell脚本将Microsoft 365分发组成员批量导出到CSV文件。
要在Microsoft 365中找到所有分销组,请按照以下步骤:
- 登录到Microsoft Exchange Admin Center
- 点击收件人>组
- 单击组类型列出发行组

让我们看一下如何用PowerShell导出Microsoft 365分销组成员的下一步。
获取具有PowerShell脚本的Microsoft 365分销小组成员
Export-M365DGMEMBES.PS1 POWERSHELL将获得包括其成员在内的所有Microsoft 365分发组,并将其导出到CSV文件。
对于每个Microsoft 365分销组,它都会收集以下信息:
- DisplayName
- 描述
- 主要SMTPADDRESS
- 次级板块
- 别名
- grouptype
- 收件人
- 同步
- 成员
- 会员parmarysmtpaddress
- 会员类型
- 业主
- 隐藏的fromAddresslists
- 会员日常运行
- 成员驱虫
- 需要EnsenderAuthenticationEnabled
- 接受
- sendonbehalf
- 发送
- 当创建时
- 换人时
笔记:您想在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应用程序注册证书和秘密到期报告。不要忘记关注我们并分享这篇文章。