Начальство поставило задачу, необходимо чтобы происходила синхронизация контактов между доменами.
Вот думаю как это проще осуществить, может кто делал?
13:23 Январь 18, 2010
Pavel Nagaev
Novorossiysk
Admin
posts 1617
2
0
Вы имеете ввиду два леса?
Если да, то или самописные скрипты.
…..-IIFP.html
Всего хорошего.
13:23 Январь 18, 2010
Pavel Nagaev
Novorossiysk
Admin
posts 1617
3
0
Вы имеете ввиду два леса?
Если да, то или самописные скрипты.
…..-IIFP.html
Всего хорошего.
16:39 Январь 18, 2010
mrhron
Member
posts 56
4
0
Нашёл вот такой скрипт:
Через определенные промежутки времени запускается скрипт, который если достучался до глобального каталога другого леса, то удалял из определенного OU все контакты, читал в том лесе всех пользователей, у которых есть почта, и создавал у меня тут контакты по новой.
Потом была создана новая адресная книга через Exchange System Manager, где в свойствах было указано Exchange Recipients и поставлена галочка на Contacts with external e-mail addresses
Option Explicit On Error Resume Next Dim objConnection, objCommand, RS Dim DisplayName, Mail Dim Container Dim Contact
Set objConnection = CreateObject(«ADODB.Connection») objConnection.Provider = «ADsDSOObject»
Set objCommand = CreateObject(«ADODB.Command») Set objCommand.ActiveConnection = objConnection
objCommand.CommandText = «SELECT displayname, mail FROM 'GC://АйПи_глобального_каталога/DC=блаблабла,DC=блаблабла' WHERE mail='*' AND objectClass='user' AND displayname <> 'SystemMailbox*' AND mail <> 'SystemMailbox*' ORDER BY displayname» Set RS = objCommand.Execute
Dim sAddress Dim sAlias if NOT (RS.BOF AND RS.EOF) then 'Удалить все контакты и создать новые Dim sOU sOU=»OU=GAL» Dim Root, DomainPath Set Root=GetObject(«LDAP://RootDSE») DomainPath=Root.Get(«DefaultNamingContext»)
Set Container = GetObject(«LDAP://» & sOU & «,» & DomainPath)
'Удаление всех контактов Dim strContact for each strContact in Container Container.Delete «contact», strContact.Name next
'Создание новых контактов RS.MoveFirst While Not RS.EOF DisplayName=RS(«displayname») Mail=RS(«mail») sAddress=»SMTP:» & mail sAlias=Split(mail,»@») Set Contact = Container.Create(«Contact», «CN=» & DisplayName) Contact.Put «sn», DisplayName Contact.Put «givenName», DisplayName Contact.Put «DisplayName», DisplayName Contact.Put «mail», mail Contact.targetAddress=sAddress Contact.PutEx 2,»proxyAddresses», Array(sAddress) Contact.Put «mailnickname», sAlias(0) & «.kamaz» Contact.SetInfo RS.MoveNext Wend end if
16:52 Январь 18, 2010
Pavel Nagaev
Novorossiysk
Admin
posts 1617
5
0
Я все время про такой скрипт и говорю, надо написать как-нибудь, но у меня такой задачи пока нет. Поэтому только теоретизирую :-)
Всего хорошего.
09:57 Июль 15, 2010
FL0od
Member
posts 7
6
0
Post edited 05:58 – Июль 15, 2010 by FL0od Post edited 06:00 – Июль 15, 2010 by FL0od Post edited 06:02 – Июль 15, 2010 by FL0od
Попробуйте использовать мою утилиту CADG2 для синхронизации контактов: …..pic=4011#1
Утилита оттестирована на доменах с более чем 10К контактов. Много положительных отзывов.
16:23 Июль 21, 2010
mrhron
Member
posts 56
7
0
Спасибо, сами написали скрипт на PS который обновляет контакты всё работает как надо.
16:49 Июль 21, 2010
FL0od
Member
posts 7
8
0
Хм.. Заметил в скрипте «.kamaz»
[q]Contact.Put «mailnickname», sAlias(0) & «.kamaz»[/q]
Это случайно?
Просто на некоторых заводах ОАО «Камаз» используют мою утиль, чтобы не мигрировать в главный лес.
09:03 Июль 22, 2010
Pavel Nagaev
Novorossiysk
Admin
posts 1617
9
0
mrhron said:
Спасибо, сами написали скрипт на PS который обновляет контакты всё работает как надо.
mrhron, скажите, а как реализована автоматическая передача файла с контактами в соседний лес?
Всего хорошего.
13:19 Февраль 14, 2011
mrhron
Member
posts 56
10
0
Нашёл по этой теме ещё одно решение:
…..-contacts/
#Адрес контроллера домена, к которому подключаемся";$Domain = 'dc.saturn.corp'Connect-QADService -Service $Domain#Получаем список пользователей удаленного домена $userlist = (Get-QADUser -name [А-Я]* -IncludedProperties DisplayName, title, company, department, mailNickname, Office, PostalCode, l, streetAddress, PhoneNumber, Pager, Mobile, facsimileTelephoneNumber, Email, physicalDeliveryOfficeName, wWWHomePage, AccountIsDisabled )ForEach ($user in $userlist) { #Пользователь заблокирован? if ($user.AccountIsDisabled -eq $true) { #У пользователя есть почта? if ($user.mail -notlike $NULL) { #Пользователь заблокирован, удаляем существующий контакт Remove-MailContact $user.mail –Confirm:$false } } elseif ($(Get-contact $user.displayname)) { if ($user.mail -notlike $NULL) { #Пользователь не заблокирован, контакт существует, надо обновить Set-Contact $user.email -Company $user.Company -Title $user.Title -Department $user.Department ` -PostalCode $user.PostalCode -StreetAddress $user.StreetAddress ` -MobilePhone $user.mobile -Fax $user.facsimileTelephoneNumber ` -Phone $user.telephoneNumber } } else { if ($user.email -notlike $NULL) { #Пользователь не заблокирован, контакт не существует, надо создать New-MailContact -Name $user.displayname -DisplayName $user.displayname -alias $user.mailnickname ` -OrganizationalUnit moon.corp/Contacts/Saturn -ExternalEmailAddress $user.mail } } }
13:42 Февраль 14, 2011
Pavel Nagaev
Novorossiysk
Admin
posts 1617
11
0
Мне лично эти решения не нравятся, т.к. на мой взгляд решение должно быть автономным и контакты должны рассылаться по почте автоматически.
Всего хорошего.
13:42 Февраль 14, 2011
Pavel Nagaev
Novorossiysk
Admin
posts 1617
12
0
Мне лично эти решения не нравятся, т.к. на мой взгляд решение должно быть автономным и контакты должны рассылаться по почте автоматически.