|
Как получить пользователей домена из 1С используя LDAP | ☑ | ||
---|---|---|---|---|
0
Demetres
27.04.12
✎
15:21
|
Добрый день! Столкнулся с такой проблемой, нужно получить пользователей домена из 1С при помощи методов провайдера LDAP, нашел кусок кода переделал его под свои нужды и всё бы хорошо, но только он не работает, выдает такую ошибку:
{Форма.Форма.Форма(193)}: Ошибка при вызове метода контекста (Execute): Произошла исключительная ситуация (Provider): Таблица не существует. Думаю что запрос составлен не верно т. к. падает в момент выполнения Execut(), если кто в теме подскажите что не так. Текст функции: Домен = "NameDomen"; СуперПользователь = "SuperUzverь"; КомандаАДО = Новый COMОбъект("ADODB.Command"); СоединениеАДО = Новый COMОбъект("ADODB.Connection"); СоединениеАДО.Provider = "ADsDSOObject;User Id=" + Домен + "\"+СуперПользователь+",ou=people,ou=domain,dc="+Домен+";Password=PasswordUser;"; СоединениеАДО.Open("Active Directory Provider"); КомандаАДО.ActiveConnection = СоединениеАДО; ТекстЗапроса = "<LDAP://"+Домен+"/ou=users,dc="+Домен+">;(&(objectCategory=person)(objectClass=user));subtree"; КомандаАДО.CommandText = ТекстЗапроса; КомандаАДО.Properties("Page Size").Value = 100; КомандаАДО.Properties("Timeout").Value = 30; КомандаАДО.Properties("Cache Results").Value = Ложь; ВыборкаАДО = КомандаАДО.Execute(); Пока НЕ ВыборкаАДО.EOF Цикл //Как-то просматриваем и обрабатываем содержимое атрибутов //как это делается тоже пока не знаю ВыборкаАДО.MoveNext(); КонецЦикла; |
|||
1
Demetres
27.04.12
✎
15:32
|
help
|
|||
2
Demetres
27.04.12
✎
15:43
|
Ещё Выше
|
|||
3
Demetres
27.04.12
✎
15:54
|
Опять вверх
|
|||
4
ДенисЧ
27.04.12
✎
16:01
|
А книгу Михайлова читал?
|
|||
5
pumbaEO
27.04.12
✎
16:14
|
||||
6
Demetres
27.04.12
✎
16:15
|
(4) не читал что за чудо книга такая?
(5) спасибо сейчас посмотрю |
|||
7
pumbaEO
27.04.12
✎
16:15
|
http://support.microsoft.com/kb/187529/ru
Чем обидел google, что он тебе не отвечает, разговаривать с тобой не хочет? |
|||
8
Demetres
27.04.12
✎
16:20
|
(5) книгу Михалыча читал там про LDAP нету
(7) буду изучать |
|||
9
Demetres
27.04.12
✎
16:32
|
Пробовал по разному переделывать текст запроса но всё время натыкаюсь на ошибку:
Произошла исключительная ситуация (Provider): Таблица не существует. |
|||
10
pumbaEO
27.04.12
✎
16:34
|
начнем с малого: права?
|
|||
11
Demetres
27.04.12
✎
16:38
|
(10) права администратора домена
|
|||
12
akaBrr
27.04.12
✎
16:39
|
Работающий пример
conn = ПолучитьCOMОбъект("","ADODB.Connection"); conn.Open("Provider=ADSDSOObject;User Id="+Аутентификация.Логин+"@main.local;Password="+Аутентификация.Пароль+";"); query = "SELECT ADsPath FROM 'LDAP://"+Константы.Домен.Получить()+"' WHERE objectClass='"+ТипОбъекта+"'"; rs = conn.Execute(query); Пока НЕ rs.EOF() Цикл obj = ПолучитьCOMОбъект(rs.Fields(0).Value); НС = СписокОбъектов.Добавить(); НС.ГУИД = obj.GUID; НС.Путь = rs.Fields(0).Value; rs.MoveNext(); КонецЦикла; |
|||
13
Demetres
27.04.12
✎
16:44
|
(12) ТипОбъекта это что и чему может равнятся
|
|||
14
akaBrr
27.04.12
✎
16:46
|
(13) Например - "user"
|
|||
15
akaBrr
27.04.12
✎
16:48
|
А еще может быть "group"
|
|||
16
akaBrr
27.04.12
✎
16:49
|
||||
17
Demetres
27.04.12
✎
16:50
|
(14) пробовал * и user опять туже ошибку пишет "Произошла исключительная ситуация (Provider): Таблица не существует."
|
|||
18
akaBrr
27.04.12
✎
16:52
|
user в кавычках "'"?
|
|||
19
Demetres
27.04.12
✎
16:58
|
(18) вот так писал WHERE objectClass='"+"user"+"'";
|
|||
20
Fram
27.04.12
✎
17:02
|
у меня когда то (давно не использовал) вот такой код работал:
Set obj = GetObject("LDAP://DC=ru/DC=audatex/DC=office/CN=Users") Set FSO = CreateObject("Scripting.FileSystemObject") Set TextStream = FSO.CreateTextFile("c:\111\123.txt") for each o in obj TextStream.WriteLine o.ADsPath next TextStream.Close |
|||
21
Fram
27.04.12
✎
17:02
|
Это vbscript, если что
|
|||
22
Demetres
27.04.12
✎
17:05
|
(20) а кто в курсе что означает вот эта строка "DC=ru"
|
|||
23
Fram
27.04.12
✎
17:08
|
(22)
OU - Organization Unit - организационный блок (организационная единица или подразделение), которая содержит такие объекты, как пользователи, контакты, группы и др. CN - Common Name - общее (относительное) имя. Пользователь, контакт, группа или другой объект, который как правило не имеет дочерних объектов. DC - Domain Component – компонент доменного имени. |
|||
24
smaharbA
27.04.12
✎
17:10
|
у объектов переменное количество свойств и методов
|
|||
25
smaharbA
27.04.12
✎
17:13
|
болван ка
|
|||
26
akaBrr
27.04.12
✎
17:16
|
(25) сообщения жгут, как и Вася Пупкин 2
|
|||
27
smaharbA
27.04.12
✎
17:16
|
болван ка два
|
|||
28
Fram
27.04.12
✎
17:17
|
Да... в системных скриптах ты крут! :)
|
|||
29
akaBrr
27.04.12
✎
17:17
|
(19) попробуй сделать без отбора по классам, убери "+"' WHERE objectClass='"+ТипОбъекта+"'";"
|
|||
30
Demetres
27.04.12
✎
17:18
|
А кто-нибудь может у себя попробовать мой код в посте (0), работает он или нет
|
|||
31
Demetres
27.04.12
✎
17:24
|
(29) таже ошибка "Произошла исключительная ситуация (Provider): Таблица не существует."
query = "SELECT ADsPath FROM 'LDAP://"+Константы.Домен.Получить()+"'"; |
|||
32
CyberNut
27.04.12
✎
17:28
|
Вот когда-то делал: http://infostart.ru/public/95857/
Может быть поможет. |
|||
33
akaBrr
27.04.12
✎
17:29
|
(31) Домен "NameDomen" существует?
|
|||
34
Demetres
27.04.12
✎
17:32
|
(32) если можено на почту не дает бесплатно скачать "soldatenko_da"+"собака"+"gw.tander.ru"
|
|||
35
Demetres
27.04.12
✎
17:33
|
(33) я пробовал и так:
query = "SELECT ADsPath FROM 'LDAP://"+"имяДомена"+"'"; |
|||
36
akaBrr
27.04.12
✎
17:34
|
(35) погоди, после "LDAP://" нельзя писать, что в голову взбредет
|
|||
37
Demetres
27.04.12
✎
17:36
|
(36) я и пишу имя домена, а как надо?
|
|||
38
akaBrr
27.04.12
✎
17:36
|
(35)Вот у Абрахамса домен "avangard.karat-e.ru", а у тебя какой?
|
|||
39
CyberNut
27.04.12
✎
17:40
|
(34) отправил
|
|||
40
Demetres
27.04.12
✎
17:41
|
(38) не пойму почему "avangard.karat-e.ru" а не просто "avangard"? Я пишу "ИмяДомена" а не "имяДомена.ru" у меня же не сайт. Может глупость написал если что не казните сильно
|
|||
41
akaBrr
27.04.12
✎
17:44
|
(40) ну так напиши имя домена, ничего мы с ним не сделаем
|
|||
42
Demetres
27.04.12
✎
17:54
|
(39) а если использовать: RootDSE = ПолучитьCOMОбъект("LDAP://RootDSE"); пишет что:
Ошибка получения объекта COM: Указанный домен не существует или к нему невозможно подключиться. (41) "MyDomain" надо писать "MyDomain.ru" |
|||
43
Demetres
27.04.12
✎
17:54
|
"MyDomain.ru" хотя я так тоже пробовал писать
|
|||
44
Demetres
27.04.12
✎
18:11
|
Кто-нибудь может проверить у себя работоспособность кода в первом посте может я просто данные пользователя неправильно заполняю или домена
|
|||
45
Demetres
27.04.12
✎
18:32
|
up
|
|||
46
Fram
27.04.12
✎
18:45
|
(42) Похоже это netbios имя домена. А dns имя какое? Может RootDSE.local?
|
|||
47
Fram
27.04.12
✎
18:48
|
nslookup RootDSE что выдает?
|
|||
48
Demetres
27.04.12
✎
18:58
|
(47) так пишет что:
{Форма.Форма.Форма(61)}: Ошибка при вызове метода контекста (ПолучитьCOMОбъект) RootDSE = ПолучитьCOMОбъект("LDAP://nslookup RootDSE"); по причине: Ошибка получения объекта COM: Сервер неработоспособен. А как посмотреть DNS имя сервера? |
|||
49
Fram
27.04.12
✎
19:00
|
(48) :) nslookup в командной строке надо было писать
|
|||
50
Demetres
27.04.12
✎
19:09
|
Пишет что не может найти сервер для IP и пишет сам адрес. Только странно этот адрес не такой как мне системщики наши дали
|
|||
51
Fram
27.04.12
✎
19:14
|
короче, 99% что с твоего компа этот домен недоступен
|
|||
52
Demetres
27.04.12
✎
19:18
|
(51) странно но при помощи утилит я могу редактировать учетные записи пользователей
|
|||
53
Demetres
27.04.12
✎
19:38
|
вверх
|
|||
54
smaharbA
27.04.12
✎
19:40
|
(40) нужно полное фкун имя домена, у тебя ведь не нт3.51, а как минимум вин2000
|
|||
55
Demetres
27.04.12
✎
19:42
|
(54) да у меня windows 2003 стоит, но я не знаю как получить это полное имя, подскажите пожалуйста
|
|||
56
smaharbA
27.04.12
✎
19:49
|
хотя бы так примерно, если компьютер входит в домен
АДСИ=СоздатьОбъект("ADSystemInfo"); Сообщить(АДСИ.DomainDNSName); |
|||
57
Demetres
27.04.12
✎
19:59
|
(56) теперь написал {Форма.Форма.Форма(521)}: Ошибка при получении значения атрибута контекста (DomainDNSName)
Сообщить(АДСИ.DomainDNSName); по причине: Произошла исключительная ситуация (0x8007054b) Завтра у сис. админов буду требовать DNS имя домена |
|||
58
Demetres
28.04.12
✎
08:19
|
(56) не может быть что команда RootDSE недоступна из-за того что у меня не AD а ADSI? Хотя провайдер LDAP доступен и там и там
|
|||
59
Demetres
28.04.12
✎
08:51
|
в TOP
|
|||
60
Demetres
28.04.12
✎
09:01
|
Люди помогите, кто может у себя проверить код для работы с LDAP?
|
|||
61
Demetres
28.04.12
✎
09:25
|
Человеки помогите, кто может у себя проверить код для работы с LDAP?
|
|||
62
Demetres
28.04.12
✎
09:41
|
вверх
|
|||
63
Demetres
28.04.12
✎
09:59
|
Проходит набор добровольцев на использование кода для работы в LDAP, записываемся не стесняемся :)
|
|||
64
pumbaEO
28.04.12
✎
10:06
|
http://jxplorer.org/downloads/users.html сначала подключись, проверь, а потом добровольцев набирай.
|
|||
65
Demetres
28.04.12
✎
10:20
|
(64) я использую LDAP admin с помощь него я могу просматривать учетные записи пользователей и т.д. а код в первом посте выдает ошибку, по этому и ищу кто сможет у себя протестить код, поможешь?
|
|||
66
Demetres
28.04.12
✎
10:39
|
Эх сорвался :)
|
|||
67
Demetres
28.04.12
✎
12:14
|
67
|
|||
68
Demetres
28.04.12
✎
12:33
|
Люди поделитесь светлыми идеями
|
|||
69
smaharbA
28.04.12
✎
12:39
|
код абсолютно рабочий, может требовать авторизацию
|
|||
70
smaharbA
28.04.12
✎
13:01
|
перед рутдсе можно задать имя домена, но если компьютер с которого выполняется входит в этот домен, то не имеет смысла
|
|||
71
smaharbA
28.04.12
✎
13:10
|
|
|||
72
smaharbA
28.04.12
✎
13:11
|
есть косяки, но не имеет значения
|
|||
73
Demetres
28.04.12
✎
13:44
|
(69) это про мой код или про тот что в (71)
|
|||
74
Demetres
28.04.12
✎
14:14
|
(72) что за косяк
|
|||
75
Demetres
28.04.12
✎
15:05
|
(72) Шо за косяк и хде?
|
|||
76
Demetres
28.04.12
✎
17:08
|
up
|
|||
77
smaharbA
28.04.12
✎
17:49
|
уже сказано - так или иначе либо твой компьютер, либо твоя программа должны знать
1. полное имя домена 2. адрес контроллера домена 3. имя и пароль пользователя домена с достаточными правами (если программа запущена не от пользователя домена) |
|||
78
Demetres
28.04.12
✎
17:50
|
(77) спасибо
|
|||
79
Demetres
28.04.12
✎
17:59
|
Всем спасибо за помощь
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |