天天看點

Exchange遷移郵箱

$user = "[email protected]"
$mdb = "maildbname"

#遷移[email protected]的郵箱到郵箱資料庫maildbname
New-MoveRequest -Identity $user -TargetDatabase $mdb

#檢視使用者郵箱 $user 遷移狀态
Get-MoveRequestStatistics -Identity $user 

#删除已遷移完成的 遷移請求
Get-MoveRequest -MoveStatus Completed | Remove-MoveRequest -Confirm:$false

#擷取未遷移完成的 遷移請求
Get-MoveRequest | ? {$_.Status -ne "Completed"}

#删除使用者 $user 的遷移請求
Get-MoveRequest $user      
#定義導出的郵箱資料庫名稱存儲的檔案路徑
$file_mailDB = "D:\operations\TEMP\maidbs.txt"
#定義使用者郵箱資訊所存儲的檔案路徑、遷移錯誤日志檔案路徑
$file = "D:\operations\TEMP\mailboxes.csv"
$file_err = "D:\operations\TEMP\migrate_error.txt"

#導出郵箱資料庫名稱到檔案
$dbs = Get-MailboxDatabase
foreach ($db in $dbs)
    { $db.Name |Out-File $file_mailDB -Encoding Default -Append }



#從郵箱資料庫導出使用者郵箱,先編輯上一步導出的郵箱資料庫名稱檔案,将不需要導出使用者郵箱的資料庫名稱删掉,儲存後再執行下面内容
$dbss = gc $file_mailDB
foreach ($dbname in $dbss)
    {
    $mbs = Get-Mailbox -Database $dbname
    $mbs |select PrimarySmtpAddress |Export-Csv $file -NoTypeInformation -Encoding Default -Append
    }



#導入需要遷移的使用者郵箱資訊
$dusers2 = Import-Csv $file -Encoding Default
$dus = $dusers2.PrimarySmtpAddress

#定義遷移的目标資料庫
$mdb_target = "VIP08"  

#定義郵箱資料庫的預設使用者郵箱大小
$mb_default_size = 5GB

#表示遷移第1-11個使用者郵箱
$dus = $dus[0..10]   #[11..100]則表示第11-101個使用者郵箱

#開始遷移使用者郵箱,遷移請求失敗則會記錄其郵箱位址到錯誤日志中
foreach ($user in $dus)  
    {
    $user
    If ( (Get-MailboxStatistics $user).TotalItemSize.Value -gt $mb_default_size )
    {
        Set-Mailbox $user -UseDatabaseQuotaDefaults $false
        Start-Sleep 15
    }
try{
    New-MoveRequest -Identity $user -TargetDatabase $mdb }
catch {
    write-host $user -ForegroundColor Red
    $user |out-file $file_err -Append
    $_.exception.message
}

    }



#待使用者郵箱遷移完成後再運作下面腳本,遷移系統郵箱
#下面腳本隻是擷取系統郵箱,數量很少,擷取到後,用New-MoveRequest指令單獨遷移即可
$dbs = Get-MailboxDatabase
foreach ($db in $dbs)
{
$mbn = $db.Name
Get-Mailbox -Database $mbn -Archive
Get-Mailbox -Database $mbn -PublicFolder
Get-Mailbox -Database $mbn -Arbitration
Get-Mailbox -Database $mbn -AuditLog
}