Администратор Exchange может перемещать ящики пользователей между почтовыми базами на одном сервере или между удалёнными mailbox серверами. В этой статье мы рассмотрим, как перемещать почтовые ящики в Exchange с помощью Exchange Admin Center и PowerShell (статья актуальна для всех поддерживаемых версий 2010/2013/2016/2019, с небольшими оговорками касательно графического интерфейса управления Exchange).
Чаще всего ящики в организации Exchange перемещают, если пользователь переместился на другую площадку с собственными почтовыми северами; когда заканчивается место на диске, где хранится текущая база; когда нужно выполнить офлайн дефрагментацию базы без прерывания почтового сервиса для пользователей.
Для переноса почтового ящика из одной базы в другую, нужно создать запрос на перемещение. Есть три типа запроса на перемещение:
С помощью Exchange Admin Center вы можете переместить один или несколько ящиков пользователей.
Я сам практически не пользуюсь возможностями перемещения ящиков через EAC, т.к. с помощью PowerShell можно выполнить эти действия гораздо удобнее и быстрее.
Чтобы узнать, в какой почтовой базе находится ящик пользователя, запустите Exchange Management Shell и выполните команду:
Get-Mailbox aaivanov| Format-List Database
В этом примере ящик пользователя находится в базе DB01.
Для создания локального запроса на перенос ящика используется командлет New-MoveRequest . Например:
New-MoveRequest -Identity aaivanov -TargetDatabase "MBX01" –BadItemLimit 10
Кроме имени пользователя важные параметры это:
Командлет вернет размер ящика и архива (TotalMailboxSize , TotalArchiveSize) и сообщение о том, что запрос на перенос добавлен в очередь (Queued)
Для переноса всех ящиков из одной почтовой базы Exchange в другую, используйте команду:
Get-Mailbox -Database DB01 -ResultSize Unlimited | New-MoveRequest -TargetDatabase DB02
Get-Mailbox -Database DB01 -Arbitration | New-MoveRequest -TargetDatabase DB02
В зависимости от размер ящика и местоположения целевого сервера, его перенос может занять длительное время. Для отслеживания статуса миграции почтового ящика в % используется командлет Get-MoveRequestStatistics .
Get-MoveRequestStatistics -Identity aaivanov
В данном примере статус переноса — InProgress, процент завершения (PercentComplete) – 26%.
Можно вывести статус всех запросов на перемещения ящиков в организации:
Get-MoveRequest | Get-MoveRequestStatistics
После того, как перенос завершен, значение PercentComplete достигнет 100, а статус переноса изменится на Completed.
Get-MoveRequest | where {$_.status -ne "completed"} | Get-MoveRequestStatistics | ft -a displayname,status*,percent
Вывести все ящики в процессе перемещения или ожидания в очереди:
Get-MoveRequest -movestatus inprogress
Get-MoveRequest -movestatus queued
Если при переносе произошла ошибка, можно вывести ее командой:
Get-MoveRequest aaivanov | Get-MoveRequestStatistics | fl *failure*, message
Для получения подробной информации об ошибках миграции ящиков, используйте:
Get-MoveRequest -resultsize unlimited | Where-Object {$_.status -like “failed”} | Get-MoveRequestStatistics -IncludeReport | select DisplayName, Message, FailureType, FailureSide, FailureTimeStamp, *bad*, *large*, Report, Identity | fl
Если нужно отменить перемещение ящика, выполните:
Remove-MoveRequest -Identity aaivanov
Чтобы удалить успешно завершенные запросы на перемещение (без этого вы не сможете перенести этот ящик в следующий раз), выполните:
Get-MoveRequest -MoveStatus Completed | Remove-MoveRequest
Для более удобного отслеживания перемещения ящиков можно использовать параметр – BatchName . Например, чтобы перенести все ящики из одной почтовой базы в другую в пакетном режиме, выполните:
Get-Mailbox -Database DB01 | New-MoveRequest -TargetDatabase DB02 -BatchName DB01toDB02Move20200915
Теперь, чтобы получить статус миграции всех ящиков в этом пакете нужно указать его имя:
Get-MoveRequest -BatchName DB01toDB02Move20200915| Get-MoveRequestStatistics
Так вы сможете убедиться, что все ящики из вашего задания успешно перенесены.
Можно временно приостановить перенос почтовых ящиков:
Get-MoveRequest | ? {$_.Batchname –like “*DB01toDB02Move20200915”}|Set-MoveRequest –SuspendWhenReadytoCompleate
Или продолжить миграцию:
Get-MoveRequest | ? {$_.Batchname –like “*DB01toDB02Move20200915”|Resume-MoveRequest
В Exchange 2013, 2016, 2019 и Exchange Online можно перемещать несколько ящиков с помощью пакетного режима (командлет New-MigrationBatch ). Список ящиков для миграции нужно указать в CSV файле, а затем выполнить команду:
New-MigrationBatch -Local -AutoStart -AutoComplete -Name DB01Move20200915 -CSVData ([System.IO.File]::ReadAllBytes("C:PSDB01Move20200915.csv")) -TargetDatabases DB02 -BadItemLimit 10
PrimaryOnly
, чтобы перенести архивный почтовый ящик – ArchiveOnly
. Если говорить о том, какие лучшие дистрибутивы Linux мы знаем, то этот список может быть…
Хотя Ubuntu и поставляется со встроенным обозревателем Firefox многие пользователи считают что это не самая…
Что такое Remmina? Remmina — это совершенно бесплатный и свободный клиент так называемого удаленного рабочего…
Как мы знаем, Ubuntu это самая популярная сборка из систем на базе ядра Linux. У…
Выбор ноутбука для каждого пользователя это довольно кропотливый процесс. Люди стараются подобрать ноутбук который будет…
Если вы решили ознакомиться с операционной системой Linux более детально и задались вопросом как установить…