Это четвертая и заключительная часть цикла статей о рассмотрении процесса перемещения почтовых ящиков в одном лесу с использованием новой функции запросов перемещения в Exchange 2010. В предыдущей части этого цикла мы остановились на том, как можно переместить несколько почтовых ящиков парой различных способов. Давайте начнем эту заключительную часть с рассмотрения MoveMailbox.ps1 сценария, который поставляется с Exchange 2010, а также того, как использовать этот сценарий для перемещения одного или нескольких почтовых ящиков. Завершим статью рассмотрением двух других разных областей, связанных с использованием запросов перемещения в Exchange 2010.
MoveMailbox.ps1
Хотя существуют различные способы перемещения почтовых ящиков Exchange 2010 посредством использования нескольких команд Exchange Management Shell, следует знать о том, что компания Microsoft предоставляет MoveMailbox PowerShell сценарий, который можно найти в папке \Program Files\Microsoft\Exchange Server\V14\Scripts после установки Exchange 2010. Этот сценарий будет выполнять локальный запрос перемещения в одной организации Exchange, и обладает дополнительным преимуществом, заключающимся в том, что он удаляет запрос перемещения сразу после его выполнения. Прежде чем рассмотреть пару примерных сценариев, давайте взглянем на параметры, используемые с ним. Этот сценарий использует несколько параметров, которые мы уже обсуждали в этом цикле статей, хотя несколько параметров имеют другие названия.
Во-первых, есть AutoSuspend параметр, функция которого такая же, как и у параметра SuspendWhenReadyToComplete, используемого с командами New-MoveRequest и Get-MoveRequest. Также, BadItemLimit параметр можно использовать со сценарием MoveMailbox. Есть также параметры MailboxDatabase и TargetDatabase, управляющие исходной и целевой базой данных соответственно. Одним из основных параметров, которые вы будете использовать с этим сценарием, является DatabaseMap параметр. Это действительно полезный параметр, позволяющий вам указывать, куда нужно переместить почтовые ящики. Мы чуть позже подробно рассмотрим этот параметр.
А пока, давайте рассмотрим простой процесс перемещения одного почтового ящика с использование сценария MoveMailbox. Чтобы переместить свой почтовый ящик в базу под названием Mailbox Database 002, я просто выполняю сценарий со следующими параметрами:
./MoveMailbox.ps1 'Identity neil 'TargetDatabase 'Mailbox Database 002'
Выполнение этой команды выдает результаты, подобные тем, что указаны на рисунке 19. Как я уже говорил, одним из замечательных моментов в этом сценарии является то, что он очищает запрос перемещения автоматически.
Увеличить
Рисунок 19: Перемещение одного почтового ящика с помощью командной сценария MoveMailbox.ps1
Карты базы MoveMailbox.ps1 Database Maps
Параметр DatabaseMap командного сценария MoveMailbox очень полезен при обработке нескольких почтовых ящиков в нем и перемещении этих ящиков в несколько целевых баз данных. Можно указывать несколько пар источник/цель в командной строке, что значительно повышает ее эффективность. Синтаксис использования этого параметра будет следующим:
-DatabaseMap @{'Source Database'='Target Database';'Source Database'='Target Database'}
В этом синтаксисе видны два сопоставления источник/цель, и они разделяются точкой с запятой. Таким образом, что использовать это для примера, в котором вы хотите переместить почтовые ящики базы Mailbox Database 001 в базу Mailbox Database 003, а почтовые ящики базы Mailbox Database 002 в базу Mailbox Database 004, нужно выполнить команду со следующим синтаксисом параметра DatabaseMap:
-DatabaseMap @{'Mailbox Database 001'='Mailbox Database 003';'Mailbox Database 002'='Mailbox Database 004'}
Предположим, вы хотите переместить все почтовые ящики, принадлежащие пользователям, которые являются сотрудниками отдела Консультантов (Consultants), в новую базу почтовых ящиков таким же способом, как мы только что обсудили. Для этого можно воспользоваться следующей командой PowerShell, если предположить, что атрибут 'department' в Active Directory правильно заполнен:
Get-User | Where {$_.Department 'eq 'Consultants'} | Get-Mailbox | ./MoveMailbox.ps1 'DatabaseMap @{'Mailbox Database 001'='Mailbox Database 003';'Mailbox Database 002'='Mailbox Database 004'}
Этот код сначала получается подробности об учетных записях тех пользователей, чей Active Directory 'department' атрибут имеет значение Consultants. Результаты этой команды подаются на обработку в команду Get-Mailbox с целью получения подробностей о почтовых ящиках этих пользователей. Затем эти подробности о почтовых ящиках обрабатываются в сценарии MoveMailbox и почтовые ящики перемещаются соответствующим образом. Как показано на рисунке 20, команда вызывает сценарий MoveMailbox, и теперь сценарий ожидает окончания процесса перемещения. По завершении этого процесса, информация состояния отображается на экране, как показано на рисунке 21. В результате выполнения этой команды в моей простой тестовой среде один почтовый ящик перемещен из базы Mailbox Database 001 в базу Mailbox Database 003, а ящик из базы Mailbox Database 002 перемещен в базу Mailbox Database 004.
Увеличить
Рисунок 20: Перемещение нескольких почтовых ящиков в процессе
Увеличить
Рисунок 21: Процесс перемещения нескольких почтовых ящиков завершен
Здоровье службы репликации почтовых ящиков
В этой статье мы уже говорили, что служба Microsoft Exchange Mailbox Replication является очень важной для общего процесса запросов перемещения, отсюда следует, что необходимо выполнять соответствующий мониторинг этой службы. В предыдущем цикле статей здесь на msexchange.org, я рассказывал о различных Exchange 2007 'тестовых' Exchange Management Shell командах, которые можно использовать для тестирования определенных функций Exchange 2007. Exchange 2010 включает Test-MRSHealth команду, где MRS – это сокращение для службы репликации почтовых ящиков (Mailbox Replication Service). Для проверки здоровья определенного сервера Client Access Server нужно просто воспользоваться параметром 'Identity, содержащим соответствующее имя сервера Client Access Server, например:
Test-MRSHealth 'Identity DAG1
В вышеуказанном примере сервер Client Access Server называется DAG1. Результат выполнения этой команды будет схож с тем, что показан на рисунке 22.
Увеличить
Рисунок 22: Результаты выполнения команды Test-MRSHealth
На рисунке 22 видно, что команда Test-MRSHealth проверяет, работает ли служба репликации Mailbox Replication Service, затем выполняет RPC ping этой службы и, наконец, проверяет, как много времени прошло с момента сканирования очереди базы почтовых ящиков.
Удаление базы данных почтовых ящиков
В качестве части обычных обязанностей администратора вам иногда приходится списывать существующий Exchange 2010 сервер или просто удалить старую базу данных почтовых ящиков. Из предыдущих частей вы, возможно, помните, что запросы перемещения не очищаются автоматически, даже если перемещение было завершено. Исключением являются ситуации, когда используется сценарий MoveMailbox.ps1, но если запросы перемещения создавались вручную с использованием Exchange Management Shell или Exchange Management Console, их нужно будет удалить до того, как будет удалена база почтовых ящиков. Это применимо даже в тех ситуациях, когда данная база почтовых ящиков не содержит ни одного почтового ящика, но все еще имеется запрос перемещения.
Попытки удалить базу данных почтовых ящиков с существующим запросом перемещения приведут к выводу отчета об ошибке, начинающегося текстом 'Эта база почтовых ящиков связана с одним или несколькими запросами перемещения (This mailbox database is associated with one or more move requests)''. Такая ошибка показана на рисунке 23. По этой причине нужно использовать Get-MoveRequest и Remove-MoveRequest команды для поиска и удаления существующих запросов перемещения.
Рисунок 23: Имеющийся запрос перемещения во время удаления базы данных
Заключение
На этом завершаем цикл из четырех частей о локальных запросах перемещения в Exchange 2010. Обратите внимание на то, что мы рассмотрели не все команды и связанные с ними параметры, но вы можете самостоятельно найти информацию по ним в соответствующей документации. Надеюсь, этот цикл статей стал хорошим фундаментом для вас в том, как осуществляется весь процесс запросов перемещения почтовых ящиков в Exchange 2010.