суббота, 20 августа 2011 г.

Общая адресная книга на LDAP Active Directory


В данной короткой статье написано как сделать простейшую адресную книгу с контактами сотрудников.

Исходные данные:
Сервер - доменный контроллер на Windows 2003 (роли AD, DNS, DHCP)
Машины - Windows XP, Windows 7
Основные этапы:
1. Создать нужные OU, которые будут хранить контакты компаний
2. Добавить в эти OU контакты из файла с форматом "точка запятая"
3. Прописать на почтовых клиентах адресные книги
 
Для решения задачи нам потребуется:
1. Файл Excel с именами, фамилиями, телефонами сотрудников компаний для базы контактов LDAP. Который мы потом сохраним в формате - точка, запятая.
2. Командный файл который занесет контакты в Active Directory
Примерный xls файл выглядит так:
 
Далее полученный файл сохраните под именем CNames.txt как текст с разделителями (точка, запятая) на диск C:  (C:\Cnames.txt) доменного контроллера на котором Active Directory.
И примените к нему следующий adding.bat файл командой:
c:\adding.bat
Батник и файл контактов должны лежать в корне диска С, можно это поменять в батнике.
Предварительно надо создать нужные OU.
Например:
company.local\adressbook\rogaikopita
company.local\adressbook\firma2
Далее в тексте батника перед добавлением каждой адресной книги, меняйте переменные:
SET OUName=OU=ADRESSBOOK,DC=COMPANY,DC=LOCAL
Текст файла adding.bat:
:: ===============
:: READ THIS FIRST
:: ===============
::
:: * This script require "CNames.txt" file on C: drive root from where it will pick user names (CN).
:: * CNames.txt file should be in following format
::        <CN Name>:<FirstName>:<LastName>:<EmailAddress>:<Description>
::   Like:
::        Farhan Kazi:Farhan:Kazi:FKazi@someserver.com:NetSec ::   Specialist
::
:: * You need to set OUName variables value to the actual OU name
::   Like:
::      
:: SET OUName=OU=ACCOUNTS,DC=TRAINING,DC=COM
::
:: * Successful run will generate "ContactReport.txt" file on C: drive root.
:: * Copy and paste following script in notepad and save it with any name having .bat extension.
::
:: *** SCRIPT START ***
@Echo Off
SETLOCAL
IF NOT EXIST C:\CNames.txt Goto ShowErr
FOR %%R IN (C:\CNames.txt) Do IF %%~zR EQU 0 Goto ShowErr
IF EXIST C:\ContactReport.txt DEL /F /Q C:\ContactReport.txt
SET OUName=OU=ADRESSBOOK,DC=COMPANY,DC=LOCAL
FOR /F "delims=: tokens=1-13" %%c IN (C:\CNames.txt) Do (
Echo Crerating Contact: %%c
DSAdd Contact "CN=%%c,%OUName%" -FN "%%d" -LN "%%e" -Display "%%f" -office "%%g" -Email "%%i" -tel "%%h" -Title "%%m" -mobile "%%k"  -fax "%%j" -hometel "%%l" -dept "%%n" -company "%%o" >>C:\ContactReport.txt
)
REM DSAdd Contact "CN=%%c,%OUName%" -FN "%%d" -LN "%%e" -Display "%%f" -Email "%%g" -Title REM "%%h" -mobile "%%i" -office "%%j" -fax "%%k" -hometel "%%l" -dept "%%m" -company "%%n"
Goto EndScript
:ShowErr
Echo "C:\CNames.txt" file does not exist or file is empty!
:EndScript
ENDLOCAL
:: *** SCRIPT END ***
После у вас появятся контакты в Active Directory в OU ADRESSBOOK\COMPANY
Далее необходимо настроить Outlook на нашу адресную книгу.
Заходим в меню Сервис -> Настройка учетный записей. После выбираем вкладку Адресные книги.

Нажимаем кнопку создать
Вводим IP адрес нашего доменного контроллера, ставим галочки и нажимаем кнопку Другие настройки
Вводим ou=AdressBook,dc=Company,dc=local
И нажимаем кнопку ОК.
Закрываем все.
И проверяем как работает наша простая адресная книга )
Данное решение очень кривое, так как приходится настраивать на каждом компьютере эту книгу. Если у вас много компьютеров, это будет сплошным гемором. Да и если добавятся новые контакты в виде OU, то опять таки придется идти и настраивать все компьютеры. Возможно можно попытаться писать настройки адресной книги в реестр компьютеров через ГПО, что было бы правильным для системного администратора большего парка машин.
Более красиво выглядит решение в виде использования Exchange Server , Sharepoint или просто сайта с контактами в MySQL с синхронизацией с Active Directory. Последнее решение, я видел в Интернете.
Хорошо было бы с помощью скрипта добавлять и удалять адресные книги.
Или делать  это же с помощью групповых политики.
Готовый бат файл и примерный файлы xls можете скачать с файлообменника:
http://download.files.namba.kz/files/11994031

3 комментария:

  1. здесь http://www.codeproject.com/Articles/14053/Adding-an-LDAP-address-book-to-MS-Outlook можно увидеть скрипт добавления адресной книги

    ОтветитьУдалить
  2. http://www.nibbl.ru/operation_system/microsoft/obshhaya-adresnaya-kniga-bez-exchange-cherez-ldap/ а тут пошаговая инструкция импорта экспорта контактов

    ОтветитьУдалить
  3. Единственно не понятно, как заставить в адресной книге отображать группы (OU - подразделения), т.к. если в AD нескокльо подразделений, то в адресной книге они все в одной куче. Где-то видел инфу, что необходимо подключить схему Exchange

    ОтветитьУдалить