Как получить список пользователей из АД, используя LDAP?

1. 3762515 02.10.13 17:23 Сейчас в теме
Много гуглил, находил примеры, но ничего рабочего так и не нашел.
Тут, на форуме, есть даже обработки, которые мне, наверно подошли бы, но скачать их смогу ещё не скоро.
Есть такое:
Функция ПолучитьИнформациюОПрофилеAD(ИмяВДомене, Домен)

    Профиль = Новый Структура;

    Попытка
    //создание COM-объекта:
    Connection = ПолучитьCOMОбъект("","ADODB.Connection");
    Connection.Provider = "ADSDSOObject";
    Connection.Open("Active Directory Provider");
    Исключение
    Возврат Неопределено;
    КонецПопытки;

    Попытка
    //создаем запрос для AD:
    query = "SELECT ADsPath FROM ‘LDAP://DC="+Домен+",DC=root,DC=loc’ WHERE SAMAccountName=’"+ИмяВДомене+"‘";

    rs = Connection.Execute(query);
    Если НЕ rs.EOF() Тогда
    obj = ПолучитьCOMОбъект(rs.Fields(0).Value);
    Если obj.Class="user" Тогда
    //если всё сделано верно – в объекте obj будет содержатся структура с данными пользователя
    Профиль.Вставить("ПолноеИмя", obj.FullName);
    Профиль.Вставить("АдресЭлектроннойПочты", obj.EmailAddress);
    КонецЕсли;
    КонецЕсли;
    rs.MoveNext();
    Исключение
    Возврат Неопределено;
    КонецПопытки;
    Connection.Close();

    Возврат Профиль;

КонецФункции
Показать

Но, оно возвращает пустое значение
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. trey 39 02.10.13 19:04 Сейчас в теме
вот скрипт получения пользователей в домене
даже рабочий :) и коментированый
Прикрепленные файлы:
Domain_users_script.txt
3. 3762515 03.10.13 09:15 Сейчас в теме
(2) trey, а на языке 1с это реально сделать?
6. taiba 87 03.10.13 11:40 Сейчас в теме
(3) 3762515, рабочий пример есть в WindowsПроводник 1.3 ( http://infostart.ru/public/16332/ )
Сервис - Пользователи
4. 3762515 03.10.13 11:14 Сейчас в теме
5. 3762515 03.10.13 11:34 Сейчас в теме
Скачал обработку отсюда, выдернул из неё это:
ADOCommand = Новый COMОбъект("ADODB.Command");
	ADOConnection = Новый COMОбъект("ADODB.Connection");
	ADOConnection.Provider = "ADsDSOObject";
	ADOConnection.Open("Active Directory Provider");
	ADOCommand.ActiveConnection = ADOConnection;
		
	RootDSE = ПолучитьCOMОбъект("LDAP://RootDSE");
	
	Domen = RootDSE.Get("defaultNamingContext");
	База = "<LDAP://" + Domen + ">";

	//Здесь можно задать произвольный фильтр для выборки пользователей из AD
	Фильтр = "(&(CN=*))"; 
	
	Реквизиты = "telephoneNumber, mail, cn, sAMAccountName";
	
	ТекстЗапроса = База + ";" + Фильтр + ";" + Реквизиты + ";subtree";
	ADOCommand.CommandText = ТекстЗапроса;
	ADOCommand.Properties("Page Size").Value = 100;
	ADOCommand.Properties("Timeout").Value = 30;
	ADOCommand.Properties("Cache Results").Value = Ложь;

	Выборка = ADOCommand.Execute();
	
	ТаблицаРезультат = Новый ТаблицаЗначений;
	
	КС = Новый КвалификаторыСтроки(100);
	Массив = Новый Массив;
	Массив.Добавить(Тип("Строка"));
	ОписаниеТиповС = Новый ОписаниеТипов(Массив, , КС);
	
	ТаблицаРезультат.Колонки.Добавить("Логин", ОписаниеТиповС);
	ТаблицаРезультат.Колонки.Добавить("Пользователь", ОписаниеТиповС);
	ТаблицаРезультат.Колонки.Добавить("Телефон", ОписаниеТиповС);
	ТаблицаРезультат.Колонки.Добавить("ЭлектроннаяПочта", ОписаниеТиповС);
	
	Пока НЕ Выборка.EOF Цикл
		Имя = Выборка.Fields("cn").Value;
		Номера = СокрЛП(Выборка.Fields("telephoneNumber").Value);
		Мыло = СокрЛП(Выборка.Fields("mail").Value);
		Логин = СокрЛП(Выборка.Fields("sAMAccountName").Value);

		//Если не указаны телефон и электронная почта, то не добавляем такого сотрудника
		Если ПустаяСтрока(Номера) И ПустаяСтрока(Мыло) Тогда
			Выборка.MoveNext();
			Продолжить;
		КонецЕсли;
		
		Если ПустаяСтрока(Номера) Тогда
			Номера = "---";
		КонецЕсли;
		Если ПустаяСтрока(Мыло) Тогда
			Мыло = "---";
		КонецЕсли;
		//Сообщить("" + Имя + ": " + Номера + " : " + Мыло + " : " + Логин);

		//Несколько номеров телефонов могут быть указаны через запятую, при необходимости 
		//можно добавлять их отдельными строками
		//МассивНомеров = ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(Номера, ",");
		//Для Каждого Номер Из МассивНомеров Цикл
		Стр = ТаблицаРезультат.Добавить();
		Стр.Логин = Логин;
		Стр.Пользователь = Имя;
		Стр.Телефон = Номера;
		Стр.ЭлектроннаяПочта = Мыло;
		//КонецЦикла;
		
		Выборка.MoveNext();
	КонецЦикла;

	Выборка.Close();
	ADOConnection.Close();
	
	Возврат ТаблицаРезультат;
Показать

Это тоже возвращает пустой результат :(
staffmedia; +1 Ответить
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот