skip to Main Content

Exchange Online – Display and Export information using PowerShell | Office 365

In the current article, we review the how to use the PowerShell command Get-Mailbox for – display and export information about Exchange Online mailboxes.

One of the most basic needs for Exchange Online administrator is – the ability to create reports that include information about the Exchange Online resources such as Mailbox’s, Distribution Groups, etc.

This is Where PowerShell “Shine”!

The GUI Interface (WEB Interface) includes limited ability to display information and have no option to export data or to create “wide area” searches for a particular object or, object with a specific parameter (property). When using the PowerShell, the options are unlimited.

This article includes a mixture of PowerShell commands for displaying and exporting information from the Exchange Online environment.

1. Display information by Mailbox Type

1.1 – Display List of all Mailbox’s type

PowerShell command Syntax

Get-Mailbox

Adjustments & Customizations
Filter the display output details:

PowerShell command Syntax

Get-Mailbox -ResultSize Unlimited | Where {$_.name -notlike '*DiscoverySearchMailbox*'}

1.2 -Display List of all Mailbox’s Summery

PowerShell command Syntax

Get-User | Group RecipientTypeDetails

1.3 -Display List of office 365 Users Mailbox’s

PowerShell command Syntax

Get-Mailbox -Filter '(RecipientTypeDetails -eq "UserMailbox")' | Select RecipientTypeDetails,Name,Alias

1.4 – Display List of Room Mailbox’s

PowerShell command Syntax

Get-MailBox -Filter '(RecipientTypeDetails -eq "RoomMailBox")' | Select Name,Alias

1.5 – Display List of Equipment Mailbox’s

PowerShell command Syntax

Get-MailBox -Filter '(RecipientTypeDetails -eq "EquipmentMailbox")' | Select Name,Alias

1.6 – Display List of Shared Mailbox’s

PowerShell command Syntax

Get-MailBox -Filter '(RecipientTypeDetails -eq "SharedMailbox")' | Select RecipientTypeDetails,Name,Alias

1.7 – Count the Mailbox’s number

PowerShell command Syntax

(Get-Mailbox -ResultSize Unlimited).Count

2. Find and Display information about Email Address

2.1 – Display ALL recipients Primary + Alias Email Address + SIP Address

PowerShell command Syntax

Get-Mailbox -ResultSize Unlimited |FL EmailAddresses

Adjustments & Customizations
Filter the display output details:

PowerShell command Syntax

Get-Mailbox -ResultSize Unlimited | Where {$_.name -Notlike '*DiscoverySearchMailbox*'} |FL EmailAddresses

2.2 -Display every Alias for each recipients + count Alias

PowerShell command Syntax

Get-Mailbox | FL name, @{name="count";expression={[array]($_.EmailAddresses).Count}},EmailAddresses

2.3 -Display Primary + Alias Email Address + SIP Address for specific Mailbox

PowerShell command Syntax

Get-Mailbox <Identity>| Select -Expand EmailAddresses Alias

PowerShell command Example

Get-Mailbox  John | Select -Expand EmailAddresses Alias

2.4 -Display Office 365 users UPN names

PowerShell command Syntax

Get-MsolUser | Select DisplayName,UserPrincipalName

3. Find Mail Recipients with specific Domain name suffix

3.1 – Find Office 365 users that have UPN With specific Domain name suffix

PowerShell command Syntax

Get-MsolUser –DomainName <Domain Suffix>| FL UserPrincipalName

PowerShell command Example

Get-MsolUser -DomainName o365info.com | FL UserPrincipalName

3.2 – Find Mailbox’s Email Addresses that have specific Domain name suffix

PowerShell command Syntax

Get-Mailbox | Where {$_.emailaddresses -like "*<Domain Suffix>*"} | FL  Name,Alias,EmailAddresses

PowerShell command Example

Get-Mailbox | Where {$_.emailaddresses -like "*o365info.com*"} | FL  Name,Alias,EmailAddresses

3.3 – Find Distribution Groups Email Addresses that have specific Domain name suffix

PowerShell command Syntax

Get-DistributionGroup  | Where {$_.emailaddresses -like "*<Domain Suffix>*"} | FL  Name,Alias,EmailAddresses

PowerShell command Example

Get-DistributionGroup  | Where {$_.emailaddresses -like "*o365info.com*"} | FL  Name,Alias,EmailAddresses

3.4 – Find Contacts Email Addresses that have specific Domain name suffix

PowerShell command Syntax

Get-Mailcontact  | Where {$_.emailaddresses -like "*<Domain Suffix>*"} | FL  Name,Alias,EmailAddresses

PowerShell command Example

Get-Mailcontact  | Where {$_.emailaddresses -like "*o365info.com*"} | FL  Name,Alias,EmailAddresses

4. Find Mail Recipients with specific Attribute

4.1 – Find Mailbox’s Email Addresses that have specific Alias

PowerShell command Syntax

Get-Mailbox | Where {$_.EmailAddresses -like "*<Alias>*"} | FL Name,Alias,EmailAddresses

PowerShell command Example

Get-Mailbox | Where {$_.EmailAddresses -like "*John*"} | FL Name,Alias,EmailAddresses

4.2 – Find Distribution Groups Email Addresses that have specific Alias

PowerShell command Syntax

Get-DistributionGroup | Where {$_.EmailAddresses -like "*<Alias>*"} | FL Name,Alias,EmailAddresses

PowerShell command Example

Get-DistributionGroup | Where {$_.EmailAddresses -like "*John*"} | FL Name,Alias,EmailAddresses

4.3 – Find Contacts Email Addresses that have specific Alias

PowerShell command Syntax

Get-Mailcontact | Where {$_.EmailAddresses -like "*<Alias>*"} | FL Name,Alias,EmailAddresses

PowerShell command Example

Get-Mailcontact| Where {$_.EmailAddresses -like "*John*"} | FL Name,Alias,EmailAddresses

4.4 – Find Email Addresses that have specific Alias + specific Domain name suffix

PowerShell command Syntax

Get-Mailbox | Where { $_.Name -like "*<Alias>*" -and $_.EmailAddresses -like "*<Domain Suffix>*" } | FL Name,Alias,EmailAddresses

PowerShell command Example

Get-Mailbox | Where { $_.Name -like "*John*" -and $_.EmailAddresses -like "*o365info.com*" } | FL Name,Alias,EmailAddresses

4.5 – Find Email Addresses that have specific Alias + specific Domain name suffix

PowerShell command Syntax

Get-Mailbox | Where { $_.UsageLocation -like "**" } |FL Name,Alias,EmailAddres,UsageLocation

PowerShell command Example

Get-Mailbox | Where { $_.UsageLocation -like "*US*" } |FL Name,Alias,EmailAddres,UsageLocation

5. View Mailbox Statistics

information about mailbox and folder size

5.1 – Display information about mailbox size (Mailbox Statistics)

PowerShell command Syntax

Get-MailboxStatistics <Identity> | FL DisplayName,StorageLimitStatus,TotalItemSize,TotalDeletedItemSize,ItemCount,DeletedItemCount

PowerShell command Example

Get-MailboxStatistics John | FL DisplayName,StorageLimitStatus,TotalItemSize,TotalDeletedItemSize,ItemCount,DeletedItemCount

5.2 – Display information about ALL of existing mailbox size (Bulk Mode)

PowerShell command Syntax

Get-Mailbox -ResultSize Unlimited | Get-MailboxStatistics | FL DisplayName,StorageLimitStatus,TotalItemSize,TotalDeletedItemSize,ItemCount,DeletedItemCount

PowerShell command Example

Get-MailboxStatistics John | FL DisplayName,StorageLimitStatus,TotalItemSize,TotalDeletedItemSize,ItemCount,DeletedItemCount

5.3 – Display information about specific folder size

PowerShell command Syntax

Get-MailboxStatistics <Identity> -FolderScope  <folder> | Select Name,FolderSize,ItemsinFolder

PowerShell command Example

Get-MailboxStatistics John -FolderScope Inbox | Select Name,FolderSize,ItemsinFolder

information about mailbox Quotas size

5.4 – View all Quotas assigned to a single Mailbox

PowerShell command Syntax

Get-Mailbox <Identity>| Fl *Quota

PowerShell command Example

Get-Mailbox John | FL *Quota

5.5 – View all Quotas assigned to ALL Mailbox’s

PowerShell command Syntax

Get-Mailbox -ResultSize Unlimited | FL DisplayName,Alias,*Quota

5.6 – View all Quotas assigned to a single Archive Mailbox

PowerShell command Syntax

Get-MailboxStatistics <Identity> -Archive | FL DisplayName,Alias,*Quota

PowerShell command Example

Get-MailboxStatistics John -Archive | FL DisplayName,Alias,*Quota

5.5 – View Statistic of all Archive Mailboxes

PowerShell command Syntax

Get-Mailbox -Archive -ResultSize Unlimited | Get-MailboxStatistics -Archive | Select DisplayName,StorageLimitStatus,@{name="TotalItemSize (MB)";expression={[math]::Round(($_.TotalItemSize.Split("(")[1].Split(" ")[0].Replace(",","")/1MB),2)}},@{name="TotalDeletedItemSize (MB)";expression={[math]::Round(($_.TotalDeletedItemSize.Split("(")[1].Split(" ")[0].Replace(",","")/1MB),2)}},ItemCount,DeletedItemCount | Sort "TotalItemSize (MB)" -Descending

5.6 – Display list of Active mailboxes and users

PowerShell command Syntax

Get-Mailbox -Resultsize unlimited| Get-MailboxStatistics | Where {$_.lastlogontime -ne $Null} | Select Displayname

5.7 – Display list inactive Mailbox accounts in Office 365

PowerShell command Syntax

Get-mailbox -Resultsize unlimited| Get-MailboxStatistics | Select Displayname,Lastlogontime | Sort-Object LastLogonTime

6. Display Mail recipients

6.1 – Display list of Distribution Groups

PowerShell command Syntax

Get-DistributionGroup | FL Name,DisplayName,GroupType,PrimarySmtpAddress

6.1 – Display list of Mail contacts

PowerShell command Syntax

Get-MailContact

7. Export information about Mailbox’s to file (CSV Format)

7.1 – Export User Mailbox’s information

PowerShell command Syntax

Get-Mailbox -Filter '(RecipientTypeDetails -eq "UserMailbox")' | Select RecipientTypeDetails,Name,Alias | Export-CSV <Path>

PowerShell command Example

Get-Mailbox -Filter '(RecipientTypeDetails -eq "UserMailbox")' | Select RecipientTypeDetails,Name,Alias | Export-CSV  C:\Info\o365-User-Mailbox.csv

7.2 – Export Room Mailbox’s information

PowerShell command Syntax

Get-Mailbox -Filter '(RecipientTypeDetails -eq "RoomMailBox")' | Select RecipientTypeDetails,Name,Alias | Export-CSV <Path>

Export Equipment Mailbox’s information

PowerShell command Syntax

Get-Mailbox -Filter '(RecipientTypeDetails -eq "EquipmentMailbox")' | Select RecipientTypeDetails,Name,Alias | Export-CSV <Path>

7.3 – Export Shared Mailbox’s information

PowerShell command Syntax

Get-Mailbox -Filter '(RecipientTypeDetails -eq "SharedMailbox")' | Select RecipientTypeDetails,Name,Alias | Export-CSV <Path> -NoTypeInformation

7.4 – Export information about mailboxes content (folders, items in folder etc.)

PowerShell command Syntax

Get-Mailbox | Select-Object alias | ForEach-Object {Get-MailboxFolderStatistics -Identity $_.alias | Select Identity,ItemsInFolder,FolderSize} | Export-CSV <Path> -NoTypeInformation

7.5 – Export information about mailboxes LastLogonTime + LastLogoffTime

PowerShell command Syntax

Get-Mailbox -ResultSize unlimited | Get-MailboxStatistics | Select  DisplayName,lastlogontime,lastlogofftime | Sort-Object DisplayName -descending | Export-CSV <Path> -NoTypeInformation
The o365info Team

The o365info Team

This article was written by our team of experienced IT architects, consultants, and engineers.

This Post Has 5 Comments

  1. If I want to manage holds on SharePoint list items in SharePoint online.. which api to use.

     

    if anyone have any sample code please suggest..

  2. @Anonymous:

    I have mailboxes in Exchange Online also. I just used the “totalitemsize” and “totaldeleteditemsize” as values and removed all of the calculations. The results for those columns include a GB/MB/KB value with a bytes value in parentheses. I then converted the .csv to .xlsx and used find and replace to remove the bytes values from those columns. You can use (* bytes) in the “find” field and leave the “replace” field blank. For reference, here’s the cmdlet I used:

    get-mailbox -resultsize unlimited | get-mailboxstatistics | select-object displayname,lastlogontime,lastlogofftime,storagelimitstatus,totalitemsize,totaldeleteditemsize,itemcount,deleteditemcount | sort-object displayname -ascending | export-csv c:filesmbxinfo.csv

    Hope that helps,
    TC

  3. Generally I like this article a lot! but…We use ExchangeOnline Office 365 and the mailbox statistics scripts don’t populate the TotalItemSize and TotalDeletedItemSize attributes. I know this is related to the serialisation of data sent back to powershell. That’s why the script uses clumsy string manipulation techniques to solve the problem but it still doesn’t work for us. Any ideas for troubleshooting please?

Leave a Reply

Your email address will not be published. Required fields are marked *