Как я переводил юзеров и их почту из домена windows 2003 на новый домен windows 2008 r2

Jan 11, 2012 13:59


«Небольшую» заметку я начал еще писать во вторник, когда проводил подготовку к миграции пользователей со старого домена на новый. Главное тут хороший план и понимание чего вы делаете и к чему стремитесь. Мой план все время дополнялся, все время всплывали какие то мелочи которые нужно будет учесть после «разъезда», надо было уже сейчас решить кто заберет «холодильник» и как другая сторона его заменит, разорвать\распилить «холодильник» как понимаете не возможно, для этого и создается план.


Удобно делать переезд на одинаковую структуру сети и сервисов, но когда надо их раздублировать, или переехать и часть сети уничтожить - это другой вопрос, так же процесс будет чуточку другой когда в процессе переезда хочется проапгрейдить софтовую часть, использовать более новые версии ПО и железа.

Для обеспечения миграции пользователей (с их паролями и SID данными) нам поможет утилитка ADMT 3.2, по этой теме есть много статей, но чтот все они с косяками. Значится я буду описывать свой путь:

Повторюсь, миграция у нас происходит из домена под управлением Windows 2003 на Windows 2008 R2. Задача:

·         перенести пользователей из домена win2k3 в домен win2k8r2

·         перенести почтовое хранилище exchange 2007 на exchange 2010 (ящики пользователей)

·         запомнить их разрешения в старой сети

·         сохранить профили пользователей на рабочих компьютерах

Часть то как поднять новый домен на windows 2008 R2 мы конечно же опустим, зачем нам тут рассписывать и так понятные вещи.

Чтобы выполнить первый пункт поставленных задач, нам нужно настроить трасты между доменами. В этом поможет вам AD Domain and Trusts. Открываем, выбираем свой домен, выбираем Properties, вкладка Trusts, кнопка New trust. Вводим имя домена с которым мы собираемся установить доверительные отношения, обязательно выбираем в следующем окне - Two way transitive, и Both for this domain and the specified domain. После добавления и проверки трастов, нам нужно подготовить сервера к миграции по средствам ADMT 3.2

1.       Если в исходном домене присутствуют ПК, под управлением ОС Windows XP, Vista (до SP1), 2000, а КД целевого домена под управлением ОС Windows 2008 и выше, то необходимо на каждом контроллере целевого домена создать ключ реестра:

HKLM\System\CurrentControlSet\Services\Netlogon\Parameters

ключ : AllowNT4Crypto

тип: REG_DWORD (32 бит)

значение: 1.

2.       Включение политики аудита. Так же необходимо настроить политику аудита в обоих доменах. Для этого править групповую политику Default Domain Controller Policy: Computer Configuration-Polices-Windows settings-Security-Local-Audit. Устанавливаем политики "Audit account management" в Success и Failure, а "Audit directory service access" в Success.

3.       Выключение фильтрации SID: Выполняется в обоих доменах, во избежании возможных проблем при переносе истории SID.

Netdom trust target.local /domain: source.local /quarantine:No /userD:administrator/passwordD:Pass

Следует заметить что эта команда врятли у вас сразу заработает (у меня все время писало Access Denied), решение оказалось очень простым. Пользователь под которым выполняется данная команда, должен быть добавлен в Build-in\Administrators обоих доменов. Т.е. для win2k3 домена пользователя administrator добавляем в Build-in\Administrators домена win2k8 и наоборот.
  1. Установим PES (Password Export Server) в домене win2k3 (т.е. из которого мы будем пользователей в новый домен переносить). PES нужна для того чтобы пользователи перенеслись с их существующими паролями.

Подготовка к установке Password Export Server проста, на win2k8 (на который вы установили ADMT 3.2), нужно выполнить следующую команду:

admt key /option:create /sourcedomain: /keyfile: /keypassword:
|*

в SourceDomain надо вписать NetBios или FQDN имя домена на windows 2003 из которого будут переноситься пользователи в новый домен.

Далее создастся файлик по адресу KeyFilePath который нужно будет при установке PES на win2k3 указать.

На самом деле ADMT 3.2 нам понадобится позже, когда будет выполнена миграция пользователей с их ящиками из old forest в котором стоит exchange 2007 sp2 (у меня стоял sp3) в new forest в котором стоит exchange 2010 sp1.

Сейчас же мы займемся подготовкой к переносу почтовых ящиков из 2007 в 2010 exchange.
Microsoft уже о нас позаботилась и создала powerShell скрипт который обеспечит подготовку для осуществления нормального переноса почтовых ящиков.

Открываем Exchange Management Shell

Выполняем:

$localcredential = Get-Credential (вводим имя и пароль админа в новом лесу\домене)

И

$remotecredential = Get-Credential (вводим имя и пароль админа в старом лесу\домене)

Сразу хочу обратить внимание, что у данного юзера должны быть полные права на работу с Exchange сервером. Желательно пользователя из нового домена\леса прописать на Exchange 2007 сервере в администраторах системы (и добавить в доменные администраторы домена), а пользователя из старого домена\леса прописать на Exchange 2010 сервере и администраторах системы (так же добавить в доменные администраторы нового домена\леса), не забываем про группы Exchange Server итд.

Далее выполняем скрипт который находится по адресу - C:\Program Files\Microsoft\Exchange Server\V14\Scripts

[PS] C:\Program Files\Microsoft\Exchange Server\V14\Scripts>.\Prepare-MoveRequest.ps1 -Identity test1@old.domain.ru -RemoteForestDomainController dc.old.domain.ru -RemoteForestCredential $remotecredential -LocalForestDomainController dc.new.domain.ru -LocalForestCredential $localcredential

-Identity test1@old.domain.ru    - тестовый ящик который мы собираемся перенести из старого леса

-RemoteForestDomainController dc.old.domain.ru   - контроллер домена в старом лесу

-RemoteForestCredential $remotecredential   - логин пароль для подключения к старому лесу (смотрим выше)

-LocalForestDomainController dc.new.domain.ru  - контроллер домена в новом лесу

-LocalForestCredential $localcredential   - логин пароль для подключения к новому лесу (смотрим выше)

После выполнения команды видим:

Appending x500:/o=old_domain /ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients/cn=test1 to proxyAddresses of New Object in Local forest.

Appending x500:/o=First Organization/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients/cn=test189572ff4 to proxyAddresses of Object(CN=test1,OU=TEST,DC=dik,DC=udm,DC=ru) in Source forest.

Preparation for test1@dik.udm.ru done.

1 mailbox(s) ready to move.

Через какое то время после тестов у меня началось вываливание ошибки вот такой:

Appending x500:/o=old_domain/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients/cn=test4 to proxyAddresses of New Object in Local forest.

Could not find the default Administrative Group 'Exchange Administrative Group (FYDIBOHF23SPDLT)'.

+ CategoryInfo : NotSpecified: (0:Int32) [Update-Recipient], DefaultAdminist...tFoundException + FullyQualifiedErrorId : 277BF097,Microsoft.Exchange.Management.RecipientTasks.UpdateRecipient

Preparation for test4@dik.udm.ru done.

1 mailbox(s) ready to move.

Очень прискорбно и не понятно откуда растут ноги, придется еще и апдейтить только что перенесенного юзера, командой Update-Recipient test1

Далее переносим его ящик.

[PS] C:\Program Files\Microsoft\Exchange Server\V14\Scripts> New-MoveRequest -Identity test1@old.domain.ru -RemoteLegacy -TargetDatabase "WG Hight availability" -RemoteGlobalCatalog dc.old.domain.ru -RemoteCredential $remotecredential -TargetDeliveryDomain new.domain.ru

-Identity test1@old.domain.ru  - пользователь

-RemoteLegacy   - команда говорит о том что в старом лесу нет Client Access Server Exchange 2010

-TargetDatabase "WG Hight availability"   - в какую базу сохранить перетаскиваемый ящик пользователя

-RemoteGlobalCatalog dc.old.domain.ru   - сервер на котором находится домен

-RemoteCredential $remotecredential    - имя пользователя и пароль для подключения к старому домену\лесу

-TargetDeliveryDomain new.domain.ru    - имя нового домена для использовании его в smtp для только что перенесенного пользователя

Возможно вы захотите поставить лимит на количество багнутых элементов при переносе ящика, тогда нужно использовать ключ -BadItemLimit. Сразу хочу сказать, что поврежденные элементы не скопируются.

После данной команды мы видим:

DisplayName               Status                    TotalMailboxSize          TotalArchiveSize         PercentComplete

-----------               ------                    ----------------          ----------------         ---------------

test4                     Queued                    0 B (0 bytes)                                      0

наблюдать за процессом выполнения можно в EMC, открываем ее, далее Recipient Configuration, там выбираем Move Request и смотрим как выполняется задача.

После завершения данной процедуры у нас появился новый пользователь из старого домена, и перенеслась вся его почта, но зайти мы пока туда не можем J

Пользователь не активен т.к. у него нет пароля, а раз нет пароля то система не даст его активировать потому что пароль не удовлетворяет политике безопасности.

Самый простой вариант чтобы ничего не сломать, это запустить ADMT в новом домене и перенести пользователей из старого, чем мы собственно и займемся сейчас.

Запускаем ADMT, выбираем User Account Migration.
  1. Source - старый домен и Domain Controller

Target - новый домен и Domain Controller
  1. Select users from domain
  2. Выбираем пользователей

4.       Указываем куда мы их будем переносить\сохранять в новом домене

5.       Выбираем Migrate passwords, сервер уже по умолчанию выбран как old_domain, обязательно на данном сервере включите службу Password Export Server Service - после установки PES эта служба ставится в ручной запуск.

6.       В Target Accont State выбираем - Enable target account, так же надо поставить галочку Migrate users SIDs to target domain, остальное «по вкусу».

7.       Имя пользователя и пароль для подключения к старому домену

8.       Тут я использовал только Fix users group membership

9.       Ставим Exclude specific object properties from migration, выбираем object type - User, и добавляем все поля в сторону Excluded Properties, потом выбираем InetOrg Person и делаем то же самое. Для чего делаем, чтобы у нас профиль не сломался, т.к. при совмещении текущего (нового профиля без пароля) и старого профиля произойдет переписание его прав и параметров, что в конечном счете навредит настройкам в Exchange 2010 и ящик предется переподключать (нахера нам лишняя работа). В общем щелкаем Next

10.   Выбираем migrate and merge conflict objects, при этом галки не ставим (снимаем)

11.   Next и Finish, пользователю успешно был добавлен пароль.

Почему не пошли другим путем, ведь в том же ADMT есть отдельный пункт про миграцию паролей, но он чтот у меня не заработал, просто не захотел копировать юзеру пароль.

Далее остается только в AD Users and Computers подправить разрешения на смену пароля, добавить не достающие группы пользователям (группы я не переносил, т.к. структуру мы полностью изменили). Так же в свойствах всех перенесенных пользователях в AD Users and Computers нужно поставить галки по вкусу типа - сменить пароль при первом входе, срок действия пароля итд. Т.к. при переносе пользователя и переносе его старого пароля, галка "сменить пароль при первом входе в систему - СТОИТ" - чтобы пользователь не мучался, ее лучше убрать (хотя все зависит от политики внутри вашей компании).

Рекомендуется это все проделывать как в виртуальной среде, так и на рабочей структуре с только что созданными для теста пользователями, проверить лучше несколько раз, пока не поймете где какие проблемы могут вас поджидать. Переносить пользователей и почту на горячую голову - не стоит, убить процесс и дойти до point of no return в этом деле очень легко.

Все это показывалось на примере с 1 пользователем, а как обстоят дела со множеством?

Да там все нормально, PowerShell штука удобная и всегда можно вытащить кучку пользователей, и обратно запихать в команду например через csv как делал я.

[PS] C:\Windows\system32>get-user | where {$_.Company -ilike "WG"} | Export-Csv -notypeinformation c:\users.csv

Обратно запихать при помощи:

Import-Csv Test.csv | Prepare-MoveRequest.ps1 -RemoteForestDomainController DC001.Fabrikam.com -RemoteForestCredential $UserCredentials

ну и если надо то

Import-csv test.csv | update-recipients

далее запускаем команду New-MoveRequest по аналогии

Напоследок скажу:
сеть между двумя exchange 2007 и exchange 2010 серверами - Gigabit на Cisco 3750
пользователей было 150 (если не изменяет память)
Общее кол-во  ГБ информации ~ 200
Переносилось все на протяжении 3,5 суток.
В общем долго,нудно, это тоже нужно учитывать!

В общем как то так! Удачи в этом не легком деле! J

exchange 2010, windows 2003, exchange 2007, windows 2008r2, windows, работа

Previous post Next post
Up