近期在做Ex2013到2019的升级,写了两个小脚本,用来批量迁移邮箱数据。
- 从文件中读取用户,执行迁移
脚本名称: move-mailbox.ps1
<#
.SYNOPSIS
Move-Mailbox create a mailbox move request to a target database.
.DESCRIPTION
Move-Mailbox read a mailboxlist from a file and use New-MoveRquest to move mailbox to the target database.
.PARAMETER File
The file name included absolute path. a mailbox per line.
.PARAMETER TargetDatabase
The target database that will storing the mailbox.
.EXAMPLE
Move-Mailbox -File c:\mailbox.txt -TargetDatabase db01
#>
param (
[Parameter(Mandatory=$True)]
[string]$File,
[Parameter(Mandatory=$True)]
[string]$Targetdb
)
Add-PSSnapin microsoft.exchange*
$mailboxes = Get-Content -Path $File
Foreach($m in $mailboxes){
New-MoveRequest -Identity $m -TargetDatabase $Targetdb -BadItemLimit unlimited -BatchName $m
}
其中文件内容: 每邮箱(去除域名后部分)一行。
- 整个db迁移
<#
.SYNOPSIS
Move-DB move all mailboxs from a source database to a target database.
.DESCRIPTION
Move-DB move all mailboxes in sepcific database to the target database.
.PARAMETER SourceDB
The name of the source database.
.PARAMETER TargetDB
The name of target database.
.EXAMPLE
Move-DB -SourceDB sdb -TargetDatabase tdb
#>
param (
[Parameter(Mandatory=$True)]
[string]$SourceDB,
[Parameter(Mandatory=$True)]
[string]$TargetDB
)
Add-PSSnapin microsoft.exchange*
$batchname=$SourceDB +"-"+$TargetDB
#Write-Output $batchname
Get-Mailbox -Database $SourceDB | New-MoveRequest -TargetDatabase $TargetDB -BadItemLimit unlimited -BatchName "$batchname"