Exchange PowerShell list mailaddress and alias

#get mailboxes and iterate through each email address and shows it either primary or an alias

get-mailbox | foreach{ 

 $host.UI.Write("Blue", $host.UI.RawUI.BackGroundColor, "`nUser Name: " + $_.DisplayName+"`n")

 for ($i=0;$i -lt $_.EmailAddresses.Count; $i++)
 {
    $address = $_.EmailAddresses[$i]
    
    $host.UI.Write("Blue", $host.UI.RawUI.BackGroundColor, $address.AddressString.ToString()+"`t")
 
    if ($address.IsPrimaryAddress)
    { 
    	$host.UI.Write("Green", $host.UI.RawUI.BackGroundColor, "Primary Email Address`n")
    }
   else
   {
    	$host.UI.Write("Green", $host.UI.RawUI.BackGroundColor, "Alias`n")
    }
 }
}

Save this entire script as a .ps1 file (Powershell script file) e.g “ShowEmailIDs.ps1”, and then place it in the “Scripts” folder in MS Exchange Installation folder which is noramlly “C:\Program Files\Microsoft\Exchange Server\Scripts”. Then open Exchange Management Shell and just type the name of .ps1 file e.g.  ShowEmailIDs.ps1 and press enter. It will show result like this
User Name: Administratormbx1@domain.com     AliasAdministrator@domain.lab      Primary Email Address
User Name: mailbox1mbx2@domain.com     Aliasmailbox1@domain.lab   Primary Email Address
Note: U can also put a filter for get-mailbox in above mentioned script to run this script for a specific domain like this
get-mailbox | Where{ $_.PrimarySmtpAddress -like “*domain.lab” }| foreach{

Close Menu