Импорт контактов из другого домена (Exchange 2010)


Пару лет назад я опубликовал скрипт для импорта контактов из одной организации Exchange в другую. Эта операция позволяла пополнить глобальную адресную книгу почтовыми контактами из другого леса. Скрипт успешно работал для Echange 2003, т.к. его процесс RUS обновлял вновь перенесенные контакты должным образом и превращал их в почтовые контакты.

Но в Exchange 2010 процесса RUS нет, и, соответственно, скрипт не работает. Тем не менее все стало проще, т.к. Exchange 2010 имеет встроенные командлеты. Вот слегка поправленная версия скрипта:

$base = [ADSI]"LDAP://ou=Contacts, ou=DEP,dc=domain,dc=ru"

$users = (new-object System.DirectoryServices.DirectorySearcher([ADSI]"LDAP://ou=DEP1,dc=domain1,dc=ru","(&(&(objectCategory=person)(objectClass=user)(!userAccountControl:1.2.840.113556.1.4.803:=2)(title=*)))")).findAll()

$users | ForEach-Object {

$_ = $_.GetDirectoryEntry()
$NewContact = $base.Create("contact","cn=" + $_.cn)

$NewContact.SetInfo()

$NewContact.extensionAttribute15 = $base.distinguishedName

$NewContact.displayname = $_.displayname
$NewContact.givenname = $_.givenname
$NewContact.sn = $_.sn
$NewContact.initials = $_.initials
$NewContact.description = $_.description

$NewContact.department = $_.department
$NewContact.title = $_.title
$NewContact.company = $_.company

$NewContact.telephoneNumber = $_.telephoneNumber
$NewContact.othertelephone = $_.othertelephone

$NewContact.ipPhone = $_.ipPhone
$NewContact.otherIpPhone = $_.otherIpPhone

$NewContact.mobile = $_.mobile
$NewContact.otherMobile = $_.otherMobile

$NewContact.facsimileTelephoneNumber = $_.facsimileTelephoneNumber
$NewContact.otherfacsimileTelephoneNumber = $_.otherfacsimileTelephoneNumber

$NewContact.SetInfo()

if ($_.proxyaddresses) {

$targetAddress = $_.proxyaddresses -clike "SMTP:*"
Enable-MailContact "cn=$($_.cn),$($base.distinguishedName)" -Alias "$_.cn" -ExternalEmailAddress "$targetAddress" -PrimarySmtpAddress $_.mail.ToString()

$NewContact.GetInfo()

$NewContact.proxyaddresses = $_.proxyaddresses

$NewContact.SetInfo()

}

}

Возможно он будет работать несколько иначе, чем версия для Exchange 2003, но это вам будет легко поправить :-)

Реклама

Добавить комментарий

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

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: