Powershell Exchange

General Information

This page shows neat tricks for powershell within exchange to get interesting information (one liners)


  • Powershell CLI installed

  • get-mailbox -Filter { ForwardingAddress -like '*' } | select-object Name,ForwardingAddress
  • finds all addresses with the forwarding address set in exchange management
  • $mbox = Get-Mailbox; $mbox | Foreach { Get-InboxRule -Mailbox $_ }
  • finds inbox rules that forward to other users

If you have exchange 2010+ you can use the following commands to set a mailbox to allow people with “Send As” Permissions to leave a copy of messages they send as the mailbox into the shared mailboxes sent items.

  • Get current status
  • Get-MaiboxSentItemsConfiguration <SharedAccountAlias>
  • Send As:
  • Set-MailboxSentItemsConfiguration <SharedAccountAlias> -SendAsItemsCopiedTo SenderAndFrom
  • Send On Behalf:
  • Set-MailboxSentItemsConfiguration <SharedAccountAlias> -SendOnBehalfOfItemsCopiedTo SenderAndFrom

If you move mailboxes, or delete a mailboxes or a large number of items, Exchange does not shrink the mailbox database, and instead creates whitespace, or “New Mailbox Space” to check the size of this, to determine if an offline defrag is necessary, use the following command.

  • Get-MailboxDatabase <'Database Name'> -Status | FL AvailableNewMailboxSpace
  • Get-MailboxDatabase -status | select Name, Servers, DatabaseSize, AvailableNewMailboxSpace
  • Get-MoveRequest | Get-MoveRequestStatistics
  • Get-MailboxDatabase | Get-MailboxStatistics | Select DisplayName, LastLoggedOnUserAccount, ItemCount, TotalItemSize, LastLogonTime, LastLogoffTime | Sort-Object TotalItemSize -Descending | Export-CSV c:\temp\[ReportName].csv
  • Get-Mailbox | Group-Object -Property:Database | Select-Object Name,Count | Sort-Object Name | Format-Table -Auto
  • windows_wiki/powershell_exchange.txt
  • Last modified: 2019/05/25 23:50
  • (external edit)