![]() |
![]() |
![]() |
|
Active directory.. | ☑ | ||
---|---|---|---|---|
0
Лохматые Уши
29.07.08
✎
09:20
|
Салют! Мне необходимо получить спиок всех пользователей из Active Directory. Наверняка уже есть подобная реализация получения такого списка из 1с 8. Но я не нашел. Поделитесь пожалуйста. Или принцип, как это реализовать.
|
|||
1
vde69
29.07.08
✎
09:22
|
Функция ПолучитьСписокДоменов () Экспорт
Результат = Новый Массив(); objNameSpace = ""; Попытка objNameSpace = ПолучитьCOMОбъект("WinNT:"); м = Новый Массив(); м.Добавить("domain"); // Computer User Group GlobalGroup domain м2 = Новый COMSafeArray(м, "VT_VARIANT"); objNameSpace.Filter = м2; Для каждого item Из objNameSpace Цикл Результат.Добавить(item.Name); КонецЦикла; Исключение Результат.Очистить(); КонецПопытки; Возврат Результат; КонецФункции Функция ПолучитьСписокГруппВДомене (ИмяДомена, ТипГрупп = "GlobalGroup") Экспорт Результат = Новый Массив(); objNameSpace = ""; Попытка objNameSpace = ПолучитьCOMОбъект("WinNT://"+СокрЛП(ИмяДомена)); м = Новый Массив(); м.Добавить(ТипГрупп); // Computer User Group GlobalGroup domain м2 = Новый COMSafeArray(м, "VT_VARIANT"); objNameSpace.Filter = м2; Для каждого item Из objNameSpace Цикл Результат.Добавить(item.Name); КонецЦикла; Исключение Результат.Очистить(); КонецПопытки; Возврат Результат; КонецФункции Функция ПолучитьСписокПользователейВГруппеДомена (ИмяДомена, ИмяГруппы) Экспорт Результат = Новый Массив(); objNameSpace = ""; Попытка objNameSpace = ПолучитьCOMОбъект("WinNT://" + СокрЛП(ИмяДомена) + "/" + СокрЛП(ИмяГруппы) + ", Group"); Для каждого item Из objNameSpace.Members() Цикл Результат.Добавить(item.Name); КонецЦикла; Исключение Результат.Очистить(); КонецПопытки; Возврат Результат; КонецФункции Функция ПользовательВГруппеДомена (ИмяДомена, ИмяГруппы, ИмяПользователя) Экспорт Результат = Ложь; Массив = ПолучитьСписокПользователейВГруппеДомена (СокрЛП(ИмяДомена), ИмяГруппы); Для каждого элМассив из Массив Цикл Если ВРег(элМассив) = ВРег(СокрЛП(ИмяПользователя)) Тогда // пользователь уже в группе Результат = Истина; Прервать; КонецЕсли; КонецЦикла; Возврат Результат; КонецФункции |
|||
2
Лохматые Уши
29.07.08
✎
09:24
|
Вах!
СПАСИБО! Буду проверять. |
|||
3
Лохматые Уши
29.07.08
✎
10:43
|
Функция ПолучитьСписокПользователейВГруппеДомена(ИмяДомена, ИмяГруппы) Экспорт
Результат = Новый Массив(); objNameSpace = ""; Попытка Если ИмяГруппы <> "" Тогда objNameSpace = ПолучитьCOMОбъект("WinNT://" + СокрЛП(ИмяДомена) + "/" + СокрЛП(ИмяГруппы) + ", Group") Иначе objNameSpace = ПолучитьCOMОбъект("WinNT://" + СокрЛП(ИмяДомена)) КонецЕсли; Для Каждого item Из objNameSpace.Members() Цикл Результат.Добавить(item.Name) КонецЦикла Исключение Результат.Очистить() КонецПопытки; Возврат Результат КонецФункции Все работает, но вот незадача - как получить список всех пользователей, не указывая конкретно группу. Пробовал пустую строку передавать, вообще ничего не передавать, рузультат один - пустота. |
|||
4
smaharbA
29.07.08
✎
10:45
|
net user /domain
|
|||
5
smaharbA
29.07.08
✎
10:48
|
семерка
|
|||
6
Лохматые Уши
29.07.08
✎
10:54
|
Ок, загрузился). Не список-я.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |