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