Export All Email Addresses from Office 365 using Powershell

We can use the Exchange Powershell command Get-Mailbox to retrieve the primary email address and secondary (or alias) email addresses for all mailboxes (ex: UserMailbox, SharedMailbox, etc..). We can also use the Get-Recipient cmdlet to get email addresses for all mail-enabled objects (for example, mailboxes, mail users, mail contacts, unified groups, and distribution groups). In this post, I am going to explain export office 365 users email addresses using powershell.

Run the below command to export the primary and alias email addresses for all user mailboxes.

1
2
3
Get-Mailbox -ResultSize Unlimited |
Select-Object DisplayName,PrimarySmtpAddress, @{Name="AliasSmtpAddresses";Expression={($_.EmailAddresses | Where-Object {$_ -clike "smtp:*"} | ForEach-Object {$_ -replace "smtp:",""}) -join "," }}  |
Export-Csv "C:\Email-Addresses.csv" -NoTypeInformation -Encoding UTF8

The above command exports only user mailboxes and shared user mailboxes, if you want to export email address all mail-enabled objects, then we need to use Get-Recipient cmdlet.

1
2
3
Get-Recipient -ResultSize Unlimited |
Select-Object DisplayName,RecipientType, PrimarySmtpAddress, @{Name="AliasSmtpAddresses";Expression={($_.EmailAddresses | Where-Object {$_ -clike "smtp:*"} | ForEach-Object {$_ -replace "smtp:",""}) -join "," }}  |
Export-Csv "C:\Email-Addresses.csv" -NoTypeInformation -Encoding UTF8

If you use Exchange Online PowerShell V2 module, then you can use new equivalent commands Get-EXOMailbox and Get-EXORecipient.

1
2
3
Get-EXOMailbox -ResultSize Unlimited |
Select-Object DisplayName,PrimarySmtpAddress, @{Name="AliasSmtpAddresses";Expression={($_.EmailAddresses | Where-Object {$_ -clike "smtp:*"} | ForEach-Object {$_ -replace "smtp:",""}) -join "," }}  |
Export-Csv "C:\Email-Addresses.csv" -NoTypeInformation -Encoding UTF8

Advertisement

Leave a Comment