概要
断开连接的邮箱是在未与 Active Directory 用户帐户关联的 Exchange 存储中的邮箱对象。断开的邮箱仍保留在 Exchange 数据库中,保留时间在邮箱数据库的已删除邮箱保留设置中指定。默认情况下,断开的邮箱将保留 30 天。在此保留期内,将邮箱连接到新的或现有的 Active Directory 用户帐户可以恢复邮箱。
有两种类型的断开连接的邮箱:
- 软删除的邮箱 将邮箱从 Microsoft Exchange Server 2010 Service Pack 1 (SP1) 数据库移动到任何其他数据库时,Exchange 不会在移动完成后从源数据库中完全删除邮箱。而是将源邮箱数据库中的邮箱切换为软删除状态。借助软删除邮箱,可以在邮箱还原操作过程中使用 MailboxRestoreRequest cmdlet 集访问邮箱数据。软删除邮箱将保留在源数据库中,直到已删除邮箱保留期过期或直到使用 Remove-StoreMailbox cmdlet 清除邮箱。
- 禁用的邮箱 当使用 Disable-Mailbox 或 Remove-Mailbox cmdlet 使邮箱断开连接或删除邮箱时,Exchange 会保留删除的邮箱,且邮箱会切换为禁用状态。借助禁用的邮箱,可以在不必还原整个邮箱数据库的情况下恢复邮箱数据。禁用的邮箱保留在邮箱数据库中,直到已删除邮箱保留期过期或直到永久删除邮箱。
无论以哪种方式还原邮箱,前提必须保证用户账号在AD内是存在的。
还原软删除的邮箱
1、要还原 软删除的邮箱 Exchange 用户邮箱,需要知道账号“显示名(DisplayName)、邮箱所在的数据库(Database),需要使用如下命令。
此命令是 查询断开连接的邮箱显示名为杨园柱的基本信息 如需更精确使用DisplayName 查询可以把-like替换为-eq
Get-MailboxDatabase | Get-MailboxStatistics | Where {($.DisconnectReason -eq "Disabled") -and ($.DisplayName -like "杨园柱*")} | fl DisplayName,Database
2、如果查询不到需要按照下列方式更新邮箱状态,就需要更新邮箱数据库上所有断开连接的邮箱的邮箱状态。
脚本如下(注:在老版本的exchange2010中使用 Clean-MailboxDatabase -database "name"即可,新版本就较为麻烦了)
$database=Get-MailboxDatabase | % {$.NAME}
foreach($DB in $database)
{
Get-MailboxStatistics -Database $DB| Where { $.DisconnectReason -ne $null } | ForEach { Update-StoreMailboxState -Database $.Database -Identity $.MailboxGuid -Confirm:$false }
}
- 禁用的邮箱 当使用 Disable-Mailbox 或 Remove-Mailbox cmdlet 使邮箱断开连接或删除邮箱时,Exchange 会保留删除的邮箱,且邮箱会切换为禁用状态。借助禁用的邮箱,可以在不必还原整个邮箱数据库的情况下恢复邮箱数据。禁用的邮箱保留在邮箱数据库中,直到已删除邮箱保留期过期或直到永久删除邮箱。
3、使用“New-MailboxRestoreRequest”命令还原用户邮箱;-SourceStoreMailbox 后面参数是邮箱的GUID; -SourceDatabase后面的参数是该邮箱所在的数据库;-TargetMailbox 后面的参数是要恢复用户邮箱名;
此示例将邮箱数据库 DB21 上显示名称为 杨园柱-效能平台的源邮箱还原到杨园柱-效能平台 的邮箱。
New-MailboxRestoreRequest -SourceDatabase "DB12" -SourceStoreMailbox "杨园柱-效能平台" -TargetMailbox 杨园柱-效能平台
还原禁用或者删除的邮箱
1、要还原被禁用或者删除的邮箱 Exchange 用户邮箱,、邮箱所在的数据库(Database)即可,需要使用如下命令。
此命令是 查询断开连接的邮箱显示名为ea02.srv邮箱所在的数据库
Get-MailboxDatabase | Get-MailboxStatistics | Where {($.DisconnectReason -eq "Disabled") -and ($.DisplayName -eq "ea02.srv")} | fl Database
2、如果查询不到需要按照下列方式更新邮箱状态,就需要更新邮箱数据库上所有断开连接的邮箱的邮箱状态。
脚本如下
$database=Get-MailboxDatabase | % {$.NAME}
foreach($DB in $database)
{
Get-MailboxStatistics -Database $DB| Where { $.DisconnectReason -ne $null } | ForEach { Update-StoreMailboxState -Database $.Database -Identity $.MailboxGuid -Confirm:$false }
}
3、使用“Connect-Mailboxt”命令还原用户邮箱;
Connect-Mailbox -Identity ea02.srv -Database db21 -User ea02.srv
原文地址:http://blog.51cto.com/lishengxian/2324769