Главная > Exchange 2013 > Синхронизация адресной книги CommuniGate Pro и Exchange 2013

Синхронизация адресной книги CommuniGate Pro и Exchange 2013

 

ex2013

Решение задачки по синхронизации адресной книги CGP и Exchange(в одну сторону CGP to Exchange). Скрипт публикую как есть, описывать подробно лень, а кому очень нужно разберется :).

Описание ситуации: Сосуществование CGP и Exchange 2013, при этом необходимо в адресной книге Exchange иметь контакты пользователей, находящихся на CGP.

Решение задачи: Скрипт + Scheduler

 

#Выгрузка объектов(пользователей) с помощью ldap запроса из CGP

Param($user = “CGPuser”,
      $password = “CGPuserpassword”,
      $filter = “(objectclass=*)”,
      $server = “server.cgp.local:489”,
      $path = “cn=cgp.local,o=mxs”,
      [switch]$all,
      [switch]$verbose)
   

if($verbose){$verbosepreference = “Continue”}

$DN = “LDAP://$server/$path”
Write-Verbose “DN = $DN”
$auth = [System.DirectoryServices.AuthenticationTypes]::FastBind
Write-Verbose “Auth = FastBind”
$de = New-Object System.DirectoryServices.DirectoryEntry($DN,$user,$Password,$auth)
Write-Verbose $de
Write-Verbose “Filter: $filter”
$ds = New-Object system.DirectoryServices.DirectorySearcher($de,$filter)
$ds.SearchScope = “Subtree”
Write-Verbose $ds
$users = $ds.FindAll()
$Encode =  new-object system.text.UTF8encoding
Set-Content -Path C:\UAB\UsersContacts.csv -Value “displayname, alias, WindowsEmailAddress” -Encoding unicode
$i = 0
foreach ($user in $users)
{
    $i++; Write-Host $i
    $Row = “{0}, {1}, {2}” -f $Encode.GetString($user.properties[“cn”][0]), $Encode.GetString($user.properties[“uid”][0]), $Encode.GetString($user.properties[“mail”][0])
    Add-Content -Path C:\UAB\usersContacts.csv -Value $Row -Encoding unicode
}
#Создание контактов из объектов присутствующих в LDAP запросе (производится добавление только отсутствующих контактов, реализованное через сравнение Compare-Object). При этом используется отдельная OU.

$ContactOU = “OU=Update Address Book,OU=All Users,DC=cgp,DC=local“
$ContactsCGP = import-Csv ‘C:\UAB\UsersContacts.csv’ -Encoding Unicode
$ContactsExch = get-mailcontact -OrganizationalUnit $ContactOU -resultsize unlimited | select-object displayname,alias,windowsemailaddress
Compare-Object $ContactsCGP $ContactsExch -Property displayname, alias, windowsemailaddress | Where-Object {$_.SideIndicator -eq “<=“} | Export-Csv -Encoding Unicode C:\UAB\AddContacts.csv
$Users = import-Csv ‘C:\UAB\AddContacts.csv’ -Encoding Unicode
$users | ForEach-Object {Remove-MailContact -identity $_.Alias -Confirm:$y}
$users | ForEach {New-MailContact -Name $_.alias -displayname $_.displayname -alias $_.alias -ExternalEmailAddress $_.WindowsEmailAddress -OrganizationalUnit $ContactOU}

 

#Удаление контактов объектов отсутствующих в LDAP запросе(т.е пользователи уже отсутствуют в CGP)

$ContactsExch = Get-MailContact -OrganizationalUnit $ContactOU -ResultSize Unlimited |select -exp alias
$ContactsCGP = import-Csv ‘C:\UAB\UsersContacts.csv’ -Encoding Unicode|select -exp alias
$Diff  = $ContactsExch | ? {$ContactsCGP -notcontains $_}
$Diff | ForEach-Object {remove-mailcontact -identity $_ -Confirm:$Y}

#P.S. Можно и не пользоваться выгрузкой в файлы, сделано для наглядности процесса синхронизации. Также можно через set-contact добавить дополнительные сведения в контакты.

Реклама
Рубрики:Exchange 2013
  1. Комментариев нет.
  1. No trackbacks yet.

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

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

Логотип WordPress.com

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

Фотография Twitter

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

Фотография Facebook

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

Google+ photo

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

Connecting to %s

Заметки ИТ инженера

Мои заметки, связанные с профессиональной деятельностью в сфере Информационных Технологий

IT in realworld

о технологиях Microsoft, или кратко обо всем. Active Directory and other stuff.

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