get-mailbox -server "ff" | move-mailbox –targetdatabase fg

fg为目标数据库名字 ff为源服务器 maxthreads (10) 10个线程迁移最多为30

是Exchange没有记录邮箱迁移进度么?当然不是,您在管理控制台中,双击正在迁移的邮箱,就能够看到这个邮箱当前迁移的进度。问题是,您的不停刷新控制台,然后在成千上万的邮箱中,找到正在迁移的,然后一个个双击查看。这个不像玩扫雷,的确没啥娱乐性。

解决方法之一,是在控制台中修改视图,添加一列进度。这样,可以通过排序,看到当前>0%而又<100%的邮箱迁移进度。

可是,我老眼昏花,看不得那么多行……没问题,我们用Power Shell来搞定。

Get-MoveRequest -MoveStatus inprogress

这样,正在移动的邮箱就被抓出来了。等等,这个是看不到进度的,继续写。

Get-MoveRequest -MoveStatus inprogess | Get-MoveRequestStatistics

这个显示就好多了。

领导打电话来了,同志们辛苦了。那么,还有多少个邮箱没有迁移呢?千万不能说等我5分钟,我数数。因为,这件事情只要10秒就搞定。

Get-MoveRequest -MoveStatus queued

闪花眼了吧,我故意的~这个用来显示仍未迁移的邮箱。放心,不会让你导入到Excel然后数行数的。

Get-MoveRequest -MoveStatus queued | Measure-Object |fl count

这下简单了。直接一个数字。

还记得吗?曾经只需要按住CTRL键,选择需要迁移的邮箱,然后直接选择任务,移动,就可以等待收工。

在Exchange 2010里面,还能重温往日旧梦否?

我没做到这一点,但是我做到了可以让能过滤出来的用户,分批次迁移。假设一下,公司有巨量的邮箱,可能无法在很短的时间里全部迁移,那么,就有可能将不同部门的用户分批分期进行迁移。

在以前,这个动作只需要打开对应的OU,选用户,迁移,即可。

现在,麻烦一点点~

Get-User -OrganizationalUnit 'domain/OU' | New-MoveRequest -TargetDatabase 'MailDB' -BatchName 'Batch 1'

'domian/OU' 就是你需要迁移的那个OU,需要写完整。'MailDB' 是邮箱迁移的目标存储,'Batch 1' 是给这批迁移邮箱起的批次名字。

这样做的好处是,可以随时查看特定批次的邮箱迁移完成情况。

Get-MoveRequest –BatchName 'Batch 1'

即可查看这一批迁移的邮箱。没进度百分比?虽然不一定准,但是可以实现:

Get-MoveRequest –BatchName 'Batch 1' | Get-MoveRequestStatistics