Решил выложить ряд скриптов, полезных при миграции AD/Exchange.
Этот скрипт позволяет фиксить группы распространения Exchange, тем самым сохраняя членство пользователей в группах рассылки после миграции пользователя между лесами.
Попробуем рассмотреть схему инфраструктуры AD/Exchange на момент миграции (пусть будет Exchange 2003 исходный и Exchange 2007 целевой):
1) Мы интегрировали два леса и две организации Exchange (Пользователей пока не мигрировали) – настроили маршрутизацию между двумя организациями, настроили синхронизацию Global Address List в ILM 2007 FP1 (или MIIS 2003, или FIM 2010). При такой схеме, почта, отправленная из целевого леса разрешается с помощью контакта в адрес @source.com и с помощью настроенного Send-connector’а маршрутизируется в исходный лес.
2) Мы мигрируем пользователей/группы из исходного леса в целевой лес, с сохранением SID. Получаем следующую картину.
У смигрированных пользователей нет атрибутов Exchange, соответственно почтовых ящиков. Их перенесут позже.
3) Дальше мы мигрируем почту пользователей (возможно параллельно с компьютерами) командлетом Move-Mailbox и получаем следующую картину:
Теперь у пользователя есть почтовый ящик на сервере EX-Target, контакт в процессе миграции удаляется (как правило). Но у пользователя в целевом лесу почтовые атрибуты также остаются. Это может привести к проблемам – пользователи из исходного домена будут видеть в адресной книге старый почтовый ящик и письма слать на него, в свою очередь пользователи из целевого домена будут видеть в адресной книге новый почтовый ящик и слать письма на него (в случае если в целевом домене уже есть смигрированные пользователи). То есть ящики живут своей жизнью (их можно синхронизировать повторной миграцией со слиянием).
Чтобы этого не случилось, нам необходимо удалить почтовый ящик из целевого домена сразу после миграции. Сделать это можно соответствующим параметром командлета Move-Mailbox (смотрите справку по данному командлету) и, если у нас исходный лес Exchange 2003, это можно сделать соответствующим мастером из Exchange System Management или Active Directory Users And Computers (если зарегистрирована соответствующая оснастка-расширение). Первый способ подходит для Exchange 2003 и для Exchange 2007. Второй способ только для Exchange 2003. Но первый способ я бы не рекомендовал использоваться для Exchange 2003, поскольку почтовый ящик удаляется физически и его нельзя подцепить обратно в случае отката действий. Здесь скрипт, который помогает автоматизировать этот процесс: http://gexeg.blogspot.com/2010/02/exchange-2003.html. Также можно проделать эти действия с помощью утилиты ADModify.
4) Удалили мы почтовый ящик из исходного домена, каким либо способом. Теперь у нас следующая картина:
5) Запускаем ILM 2007 для синхронизации GAL. У нас создается соответствующий контакт в исходном домене и проблема из пункта 4 решается. Теперь почта для этого пользователя будет разрешаться в контакт и маршрутизироваться в целевой лес.
Появляется еще одна проблема. До этого пользователь состоял в группе рассылки «Группа рассылки 1». Он и сейчас там есть, но у него нет атрибутов. Поэтому почта, отправленная на группу рассылки не попадет в ящик пользователя «Пользователь 1» (как из целевого, так и из исходного домена).
Как решить эту проблему? Очень просто, необходимо добавить контакт «Контакт (Пользователь1)» в группу рассылки «Группа рассылки 1).
Теперь почта, отправленная на группу рассылки исходного домена, будет расширяться (expand) в контакт и маршрутизироваться в целевой лес. Почта, отправленная на группу рассылки из целевого домена, будет разрешаться в контакт целевого домена, маршрутизироваться в исходный лес, далее в исходном лесу попадет на группу рассылки, расширится в контакт и маршрутизируется в целевой лес. Трафик, конечно не оптимальный, но работает.
Ручное добавление контактов в группу становится кошмаром, когда таких контактов много (сотни, тысячи). Тут нужна автоматизация.
Я столкнулся с этой проблемой и написал скрипт, который позволяет автоматизировать задачу ручного добавления контактов в группы рассылки.
Скрипт - fix_distribution_group.ps1
Синтаксис:
fix_distribution_group.ps1 -slotfile <Входной файл> [-SourceDomain <домен-источник>] [-TargetDomain <целевой_домен>] [-Force]
-slotfile <входной файл> - файл со списком логинов смигрированных пользователей с почтовыми ящиками. Обязательный параметр.
-SourceDomain <домен-источник> - домен источник. Необязательный параметр. В этом домене происходит поиск контактов и групп распространения пользователей. В этом же домене происходят изменения – контакт добавляется в группу распространения. Поэтому необходимы соответствующие права. Если этот параметр опустить, то будет использоваться текущий контекст пользователя и его домен. Может быть указано в формате DNS-имя или NETBIOS-имя.
-TargetDomain <целевой-домен>. Необязательный параметр. В этом домене происходит поиск почтового ящика пользователя, для того чтобы потом найти соответствующий контакт в исходном домене. Необходимые права – только на чтение. Если этот параметр опустить, то будет использоваться текущий контекст пользователя и его домен. Может быть указано в формате DNS-имя или NETBIOS-имя.
-Force. Этот параметр позволяет не выводить подтверждение на проводимые модификации перед выполнением скрипта. По умолчанию перед выполнением скрипта будут показаны параметры запуска и требование подтверждения дальнейшего выполнения. Это очень важно - поскольку происходят модификации данных.
-Help. Вызов справки по скрипту.
Примечание:
Необходимо указать хотя бы один из параметров sourcedomain или argetdomain. Эти параметры не должны быть одинаковыми. Соответствующие проверки происходят. В случае неправильности – будет выдана ошибка.
Примеры:
fix_distribution_group.ps1 -slotfile slot1.txt -SourceDomain source.com
fix_distribution_group.ps1 -slotfile slot1.txt -SourceDomain source.com –TargetDomain target.com
fix_distribution_group.ps1 -slotfile slot1.txt -SourceDomain source.com -Force
Описание работы и ограничения:
Работает скрипт следующим образом. Читается файл, указанный в параметре slotfile. Содержание файла – логины (sAMAccountName), построчно. Для каждого пользователя из файла происходит поиск этого пользователя в исходном домене (по атрибуту sAMAccountName). Далее у найденного пользователя определяются группы распространения, в которых он состоит (поэтому не нужно удалять пользователя из этих групп или вообще удалять). После этого происходит поиск в целевом домене (по sAMAccountName). У найденного пользователя (целевой домен) происходит чтение атрибута legacyExchangeDN. Затем в исходном домене по атрибуту proxyAddresses ищется контакт, у которого есть этот адрес (legacyExchangeDN). Если контакт найден, то он добавляется во все ранее найденные группы распространения пользователя исходного домена.
Во входном файле можно указать подстановочные знаки LDAP, но при поиске будет возвращен только один объект (первый).
Есть ограничение. Поскольку поиск в целевом домене происходит по sAMAccountName (в идеале нужно искать по SIDHistory), то исходный и целевой пользователи должны иметь одинаковые sAMAccountName (хотя можно использовать хитрость с подстановочными знаками во входном файле).
Поиск по SIDHistory не трудно реализовать (есть в одном из моих скриптов, который также скоро выложу, можно выдрать из него).
Сам скрипт:
3 комментария:
[url=http://certifiedpharmacy.co.uk/products/tenormin.htm][img]http://onlinemedistore.com/2.jpg[/img][/url]
physicians pharmacy http://certifiedpharmacy.co.uk/products/zyvox.htm pharmacy school searcy ar [url=http://certifiedpharmacy.co.uk/products/cialis-super-active-plus.htm]pharmacy picture[/url]
peoples pharmacy public radio http://certifiedpharmacy.co.uk/products/flovent.htm springbok pharmacy [url=http://certifiedpharmacy.co.uk/products/keftab.htm]keftab[/url]
free download database about pharmacy at egypt http://certifiedpharmacy.co.uk/categories/blood-pressure.htm museum pharmacy [url=http://certifiedpharmacy.co.uk/products/diflucan.htm]pharmacy alprazolam[/url]
eric boel pharmacy http://certifiedpharmacy.co.uk/products/kamagra-oral-jelly.htm pharmacy online us [url=http://certifiedpharmacy.co.uk/products/brand-amoxil.htm]brand amoxil[/url]
dating peter437 [url=http://freeinternetdating.info/matchmaking/computerized-matchmaking-fundraisers-valentines-day]computerized matchmaking fundraisers valentines day[/url] dating site russian women
victorian women of dating age http://freeinternetdating.info/love/suite-life-on-deck-love-stories dating site keywords
saif and kareena dating [url=http://freeinternetdating.info/relationships/troubled-relationships-help-and-advice]dating service hong kong[/url] church of god dating an atheist
teen dating for gay teens http://loveepicentre.com/map/ dating sites best male profiles
big bang dating [url=http://loveepicentre.com/articles/]dating advice body language[/url] dating advice gay men
dating web sites rating [url=http://loveepicentre.com]eeder dating[/url] dating colombia [url=http://loveepicentre.com/user/Femzylee/]Femzylee[/url] swiss 100 free dating site
Отправить комментарий