Exchange commands
Configuration: MS Exchange 2010 SP3, Windows 2008 R2
Collect info
Database size
Mailboxes in a database
Get-MailboxStatistics -Database "DB0" | sort TotalItemSize -desc | ft "displayname", "DisconnectReason", "TotalItemSize"
Mailbox - Biggest mailboxes
Get-MailboxStatistics -server SRV01 | sort TotalItemSize -desc | ft "displayname", "ItemCount", "TotalItemSize" | select -First 50
Search
# Find the entity that owns the email address
Get-Recipient | ?{$_.emailaddresses -like "*[email protected]*"}
MailBox - Import from PST
# Start the import. A UNC path is required.
New-MailboxImportRequest -FilePath \\SRV01\pst\filename.pst -Mailbox "user.name"
# View import progress
Get-MailboxImportRequest | Get-MailboxImportRequestStatistics
# Remove import requests
Get-MailboxImportRequest | Remove-MailboxImportRequest
Mailbox - export to PST
# Export the entire mailbox to PST
New-MailboxExportRequest -Mailbox User.Name -FilePath "\\SRV01\Share\filename.pst"
# Export messages to *.pst within a date range
# The date format is set to DD.MM.YYYY, but an error occurs if DD > 12.
# Options:
# lt = less then <
# gt = greater then >
# le = less equal <=
# ge = greater equal >=
New-MailboxExportRequest -Mailbox user.name -ContentFilter {(Sent -ge "01/01/2012") -and (Sent -lt "01/01/2013")} -FilePath \\SRV01\Share\user_name-2012.pst
# View export progress
Get-MailboxExportRequest | Get-MailboxExportRequestStatistics
# Remove requests with Completed status
Get-MailboxExportRequest -Status Completed | Remove-MailboxExportRequest
# Remove all requests
Get-MailboxExportRequest | Remove-MailboxExportRequest
Moving mailbox to another DB
# Start the move. It runs in the background. The server can be safely restarted while it is running.
New-MoveRequest -Identity "user.name" -TargetDatabase "DB0"
# Move system (service) mailboxes
Get-Mailbox -Database "DB_FROM" –Arbitration | New-MoveRequest -TargetDatabase "DB_TO"
# View status
Get-MoveRequest | Get-MoveRequestStatistics
# Remove requests with Completed status
Get-MoveRequest -MoveStatus Completed | Remove-MoveRequest
Mailbox - folders size
# Detailed
Get-MailboxFolderStatistics "user.name"
# Summary
Get-MailboxFolderStatistics "user.name" | ft Name,FolderAndSubfolderSize
Mailbox - Grant contact permissions to another user
# View permissions
Get-MailboxFolderPermission -identity "user.name-from:\Контакты"
# Add Editor permissions
Add-MailboxFolderPermission -identity "user.name-from:\Контакты" -user "user.name-to" -AccessRights "Editor"
Remove messages
# Remove the message with subject «spam subj» from s.petrov's mailbox
Search-Mailbox -Identity "s.petrov" -SearchQuery 'тема:"spam subj"' –DeleteContent
# View the number of messages with subject «spam subj» ...
# In a specific DB
Get-Mailbox -DataBase "DB001" | Search-Mailbox -SearchQuery 'тема:"spam subj"' -EstimateResultOnly | ft DisplayName, ResultItemsCount
# In a specific OU
Get-Mailbox -OrganizationalUnit "OU-NAME" | Search-Mailbox -SearchQuery 'тема:"spam subj"' -EstimateResultOnly | ft DisplayName, ResultItemsCount
# Remove messages with subject "spam subj" from all mailboxes in the DB001 database
# In a specific DB
Get-Mailbox -DataBase "DB001" | Search-Mailbox -SearchQuery 'тема:"spam subj"' -DeleteContent | ft DisplayName, ResultItemsCount
# In a specific OU
Get-Mailbox -OrganizationalUnit "OU-NAME" | Search-Mailbox -SearchQuery 'тема:"spam subj"' -DeleteContent | ft DisplayName, ResultItemsCount
Clean queue
#
Get-Message -Queue "v09\Submission" -ResultSize unlimited | where{$_.Subject -eq "Subject" } | Remove-Message -WithNDR $False
#
Get-Message -ResultSize 10000 |where{$_.MessageSourceName -eq "SMTP:local" } | Remove-Message -WithNDR $False
#
Get-Message -ResultSize 10000 |where{$_.MessageSourceName -eq "DSN" } | Remove-Message