Администратор 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
. Zulip — программное обеспечение для реализации корпоративного чата. Разработан в 2012 году, в 2014 был…
Zookeeper — cервис-координатор, который позволяет обеспечить контроль синхронизации данных. Разработан на Java компанией Apache Software…
Zimbra — программное обеспечение для реализации почтового сервиса или, если сказать точнее, автоматизации совместной деятельности…
Zabbix — бесплатная система мониторинга. Позволяет отслеживать состояние сетевых узлов, компьютеров и серверов. Возможности: Поддержка…
YouTube — компания-владелец одноименного портала для просмотра и хранения видео. Чтобы пользоваться данным порталом достаточно…
Yota — провайдер, предоставляющий доступ к сети Интернет по беспроводной связи. Впервые, сервис начал работать…