$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
}