Export members of single distribution group
#Connect to Exchange Online
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope LocalMachine -Force;
Install-PackageProvider -Name NuGet -Force;
Set-PSRepository -Name "PSGallery" -InstallationPolicy Trusted;
Install-Module -Name ExchangeOnlineManagement;
Import-Module ExchangeOnlineManagement;
Connect-ExchangeOnline;
#Variables
mkdir $env:temp\o365; cd $env:temp\o365;
$OutputFile = "$env:temp\o365\DistributionGroupMembers.csv"
$DistributionGroup = read-host 'Email address of the distribution group'
#Get mailbox statistics
Get-DistributionGroupMember -Identity $DistributionGroup |
Select-Object DisplayName, UsageLocation, PrimarySmtpAddress, RecipientType |
Export-Csv $OutputFile -NoTypeInformation -Encoding UTF8
#Clean up session
Get-PSSession | Remove-PSSession
ii $env:temp\o365; .\DistributionGroupMembers.csv
#End
Export members of all distribution groups
#Constant Variables
mkdir $env:temp\o365; cd $env:temp\o365;
$OutputFile = "$env:temp\o365\DistributionGroupMembers.csv"
#Prepare Output file with headers
Out-File -FilePath $OutputFile -InputObject "Distribution Group DisplayName,Distribution Group Email,Member DisplayName, Member Email, Member Type" -Encoding UTF8
#Get all Distribution Groups from Office 365
$objDistributionGroups = Get-DistributionGroup -ResultSize Unlimited
#Iterate through all groups, one at a time
Foreach ($objDistributionGroup in $objDistributionGroups)
{
write-host "Processing $($objDistributionGroup.DisplayName)..."
#Get members of this group
$objDGMembers = Get-DistributionGroupMember -Identity $($objDistributionGroup.PrimarySmtpAddress)
write-host "Found $($objDGMembers.Count) members..."
#Iterate through each member
Foreach ($objMember in $objDGMembers)
{
Out-File -FilePath $OutputFile -InputObject "$($objDistributionGroup.DisplayName),$($objDistributionGroup.PrimarySMTPAddress),$($objMember.DisplayName),$($objMember.PrimarySMTPAddress),$($objMember.RecipientType)" -Encoding UTF8 -append
write-host "`t$($objDistributionGroup.DisplayName),$($objDistributionGroup.PrimarySMTPAddress),$($objMember.DisplayName),$($objMember.PrimarySMTPAddress),$($objMember.RecipientType)"
}
}
#Clean up session
Get-PSSession | Remove-PSSession
ii $env:temp\o365; .\DistributionGroupMembers.csv
#End
5/5 - (1 vote)