Mail enabling new users should be easy to do from within the Exchange management console. If you are in a really large organization, you soon discover that it is painfully slow. When we create new users it takes time to replicate to Exchange, so we don’t mail enable new users upon creation. Making matters worse is that our mail alias isn’t the default for Exchange, which is the UPN.
Enable-NewUserMailboxes.ps1 is a PowerShell script which bulk enables new user accounts, permitting a custom Exchange alias. For publication I have set this to the SamAccountName, but with a little bit of coding, you can change it to your requirements.
The script runs interactively, and will automatically checks for and loads the remote Exchange shell. If you have not specified a starting OU for search at the top of the script, you will be prompted to select the OU to query for user accounts. Then a list of users is collected and display using Out-Gridview:
#Get list of enabled users who don't have an assigned mailbox $List = Get-User -RecipientTypeDetails User -ResultSize Unlimited -organizationalUnit $searchBase| Where-Object {$_.UseraccountControl -notlike "*accountdisabled*"} | select-Object Displayname, Title, userprincipalName, SamAccountName, WhenCreated | Sort-Object WhenCreated -descending | Out-GridView -Title "Select Users to Assign New Mailbox" -Passthru
Capturing output from Enable-Mailbox turned out to be a challenge. I ended up doing this:
Enable-Mailbox -identity $UPN -alias $alias -whatif:$btest -erroraction Stop 2>&1| Tee-Object -Variable output | out-null
The script creates a logfile, which is placed by default on your desktop. The log folder can be edited.