Exchange迁移邮箱
$user = "zhangsan@tat.com.cn" $mdb = "maildbname" #迁移zhangsan@tat.com.cn的邮箱到邮箱数据库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 | Remove-MoveRequest
#定义导出的邮箱数据库名称存储的文件路径 $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 }