Главная > Без рубрики > Перенос ящика в другую базу данных Exchange Server 2013

Перенос ящика в другую базу данных Exchange Server 2013

13 октября 2015

exchange management shellПеренести ящик из одной БД в другую можно достаточно легко через веб-интерфейс Exchange Server 2013, но в этой статье я рассмотрю вариант переноса с помощью powershell
, т.к. веб-интерфейс даже версии SP1 достаточно сырой и у меня часто возникают ошибки в заданиях при банальном перетаскивании ящика из одной базы в другую.

Для создания запросов перемещения ящиков между базами данных используется командлет «New-MoveRequest», о котором подробнее можно почитать тут.

Пример полной команды будет выглядеть примерно следующим образом:

[PS] C:\Windows\system32>New-MoveRequest -Identity «mailbox_name@bissquit.com» -TargetDatabase «Name of you target database» -BatchName «Enter your request name» -BadItemLimit «200»

Следует отдельно рассказать о параметре «BadItemLimit«: он отвечает за количество поврежденных элементов, которое будет пропущено. По умолчанию, если его не указывать, этот параметр равен 0 и Microsoft строго рекомендуют его не трогать. Однако если в ящике присутствуют поврежденные элементы, запрос будет завершаться с ошибкой и в итоге переместить ящик вы не сможете, поэтому придется принудительно задавать количество пропускаемых поврежденных элементов. На моей практике при переносе двух сотен ящиков из одних баз в другие (это мне пришлось сделать при миграции с Exchange 2010 на версию 2013) у меня было не больше 2-4 ящиков с хотя бы одним поврежденным элементом, при том что 2010 сервер работал несколько лет (резервное копирование и обслуживание баз производилось регулярно), поэтому можно сделать вывод, что при грамотном администрировании Exchange случаев с присутствием поврежденных элементов у вас будет достаточно мало.

Также хочу отметить, что если значение «BadItemLimit» у вас больше 50, то нужно принудительно указать ключ «AcceptLargeDataLoss«, по крайней мере так написано на «Technet», но реально я всегда ставил количество элементов 200 и меня ни разу никто не спросил о том согласен ли я на большие потери данных и не запретил при этом выполнение команды… Пруфы ниже на скриншоте:

Exchange 2013 New-MoveRequest

Запрос на перемещение сделали, отлично. Но что если ящик имеет либо большой размер, либо огромное количество элементов и вы просто хотите отследить прогресс операции, который в самом начале показался в столбце «PercentComplete«? Тут наступает самое интересное, потому что для отслеживания прогресса выполнения задания нам будет нужен уже другой командлет, вот он: «Get-MoveRequestStatistics«.

Пример использования на основе данных из команды в начале статьи:

[PS] C:\Windows\system32>Get-MoveRequestStatistics -Identity mailbox_name@bissquit.com

А вот и вывод команды:

Exchange 2013 New-MoveRequestStatistics

Справа можно увидеть столбец с процентом выполнения задачи.

Надо отметить, что концепция Exchange 2013 состоит в том, что центры администрирования включают в себя только базовый функционал, минимальный набор. Для получения же доступа к тонким параметрам, а зачастую даже к некоторым функциям (например, к операциям над offline address book, но об этом в другой раз), нужно использовать исключительно powershell.

Комментирование отключено.