Exchange 2013/O365 and Great Powershell Tips from Microsoft colleagues

I- Use “-Filter” parameter where available instead of “where” statements’

For example, the following commands provide the same results:

Get-Recipient –ResultSize Unlimited | Where {($_.RecipientTypeDetails –eq "UserMailbox") –and ($_.DisplayName –like "*Zarka")}

Get-Recipient –ResultSize Unlimited –Filter {(RecipientTypeDetails –eq "UserMailbox") –and (DisplayName –like "*Zarka")}

In a large environment the first command takes an extremely long time to complete (also susceptible to throttling) and returns all data to the client session which is then filtered locally.  The second command is executed at server using ambiguous indexing and returns only the filtered results in seconds.

Credits: Roman Zarkacheck out his great O365 blog as well !


II- Exchange Commandlet Log is back in Exchange 2013 / O365 !

Use the “Show Command Logging’ menu to see what PS commands the portal is running.



Credits: Aaron GuilmetteCheckout his great TechNet GAllery contributions !


III- Graphical interface for Powershell Commandlets !

PowerShell 3.0 (Exchange 2013 and Exchange Online) offers a graphical interface to run or copy cmdlets and their parameters.  Can't remember PowerShell syntax for migrating mailboxes?  No problem, just fill out the form...

Show-Command New-MoveRequest

How about setting mailbox polices…

Show-Command Set-CasMailbox

This works with nearly every PowerShell cmdlet. 


Credits: Roman Zarka again – check out his great O365 blog !

Comments (1)

Skip to main content