一、Disconnected Mailboxes
1、Finding Disconnected Mailboxes
The first function is called Get-DisconnectedMailbox and the name is pretty much self explanitory. This function will give you a list of all disconnected mailboxes on each of your mailbox servers. Take a look at the following code:
function Get-DisconnectedMailbox { [CmdletBinding()] param( [Parameter(Position=0, Mandatory=$false)] [System.String] $Name = '*' ) $mailboxes = Get-MailboxServer $mailboxes | %{ $disconn = Get-Mailboxstatistics -Server $_.name | ?{ $_.DisconnectDate -ne $null } $disconn | ?{$_.displayname -like $Name} | Select DisplayName, @{n="StoreMailboxIdentity";e={$_.MailboxGuid}}, Database } }
Note: If you’ve recently deleted a mailbox, but it’s not showing up when running Get-DisconnectedMailbox, you may need to force Exchange to recognize this by running the Clean-MailboxDatabase cmdlet.
2、Purging Disconnected Mailboxes
You purge mailboxes using the Remove-Mailbox cmdlet, specifying the StoreMailboxIdentity and Database for the disconnected mailbox in question. For a good example of this, check out Nitin Gupta’s post on removing disconnected mailboxes.
In an effort to simplify the purging of disconnected mailboxes, I wrote the Remove-DisconnectedMailbox function that is designed to work with Get-DisconnectedMailbox. Here is the code:
function Remove-DisconnectedMailbox { [CmdletBinding(SupportsShouldProcess=$true)] param( [Parameter(Position=0, ValueFromPipelineByPropertyName=$true, Mandatory=$true)] [System.String] $StoreMailboxIdentity, [Parameter(Position=1, ValueFromPipelineByPropertyName=$true, Mandatory=$true)] [System.String] $Database ) process { Remove-Mailbox @PSBoundParameters } }
Get-DisconnectedMailbox “Bill Jones” | Remove-DisconnectedMailbox -Confirm:$false
Get-DisconnectedMailbox “Bradford Boyer” | %{Connect-Mailbox -Identity $_.StoreMailboxIdentity -Database ‘DB1′ -User ‘contosoboyer’ -Alias ‘bboyer’}
参考至博文<http://www.mikepfeiffer.net/2010/06/managing-disconnected-exchange-mailboxes-with-powershell/>
二、