0 / 0 / 0
Регистрация: 11.06.2013
Сообщений: 19

Поиск пользователей с динамическим вводом и выводом в AD по атрибутам

05.06.2014, 17:29. Показов 2147. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток!
Есть скрипт который может найти пользователей по динамическому вводу его samaccountname, либо name, до по чему угодно. Но вот выводит он только одного юзера (последнего из списка найденных). Как сделать динамически вывод? И еще возможность выбрать найденного пользователя?
Спасибо

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
Option Explicit
Dim adoCommand, adoConnection
Dim varBaseDN, varFilter, varAttributes
Dim objRootDSE, varDNSDomain, strQuery, adoRecordset, strName, strDN
Dim varSearchName
 
' Setup ADO objects.
Set adoCommand = CreateObject("ADODB.Command")
Set adoConnection = CreateObject("ADODB.Connection")
adoConnection.Provider = "ADsDSOObject"
adoConnection.Open "Active Directory Provider"
Set adoCommand.ActiveConnection = adoConnection
 
' Search entire Active Directory domain.
Set objRootDSE = GetObject("LDAP://RootDSE")
 
varDNSDomain = objRootDSE.Get("defaultNamingContext")
varBaseDN = "<LDAP://" & varDNSDomain & ">"
 
' Asks samAccountName from user.
Do
   varSearchName = InputBox ("Please enter user's samAccountName")
   If varSearchName = "" then
      Msgbox "No samAccountName entered"
   end if
Loop Until varSearchName <> ""
 
 
' Filter on user objects.
varFilter = "(&(objectCategory=person)(objectClass=user)(samaccountname="& varSearchName &"))"
 
' Comma delimited list of attribute values to retrieve.
varAttributes = "samaccountname,distinguishedname"
 
' Construct the LDAP syntax query.
strQuery = varBaseDN & ";" & varFilter & ";" & varAttributes & ";subtree"
adoCommand.CommandText = strQuery
adoCommand.Properties("Page Size") = 1000
adoCommand.Properties("Timeout") = 20
adoCommand.Properties("Cache Results") = False
 
' Run the query.
Set adoRecordset = adoCommand.Execute
 
' Enumerate the resulting recordset.
Do Until adoRecordset.EOF
    ' Retrieve values and display.
    strName = adoRecordset.Fields("samaccountname").Value
    strDN = adoRecordset.Fields("distinguishedname").value
    Wscript.Echo "Name: " & strName & "; Location: " & strDN
    ' Move to the next record in the recordset.
    adoRecordset.MoveNext
Loop
 
  If strName= "" then
      Msgbox "No user found with the name '"& varSearchName &"'"
   end if
 
' close ado connections.
adoRecordset.Close
adoConnection.Close
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.06.2014, 17:29
Ответы с готовыми решениями:

Ошибка с вводом/выводом
Qt компилирует, но в процессе исполнения программа закрывается с ошибкой. void main(void) { double num1=0.,num2=0.; char...

Подсобите со вводом/выводом
Здравствуйте! Крайняя ситуация, поэтому прошу помощь :( Необходимо вычислить сумму: z=\sum_{i=0}^{n}{y}_{i} , где ...

Управление вводом-выводом
Помогите решить задачу. Пусть два процесса осуществляют доступ к одному и тому же файлу, но один из них читает файл, а другой...

10
2619 / 549 / 109
Регистрация: 21.03.2012
Сообщений: 1,051
06.06.2014, 20:38
Цитата Сообщение от aandrik Посмотреть сообщение
... Но вот выводит он только одного юзера (последнего из списка найденных)...
В домене не может существовать нескольких "учёток", у которых бы совпадали атрибуты samaccountname или name.
Цитата Сообщение от aandrik Посмотреть сообщение
... Как сделать динамически вывод?..
Если речь идёт о том, как накопить в строковой переменной список "учёток", удовлетворяющих условиям поискового запроса, то, например, так:
Visual Basic
1
2
3
4
5
6
7
Do Until adoRecordset.EOF
    ' Retrieve values and display.
    strResult = strResult & adoRecordset.Fields("mail").Value & vbNewLine
    ' Move to the next record in the recordset.
    adoRecordset.MoveNext
Loop
Wscript.Echo strResult
Цитата Сообщение от aandrik Посмотреть сообщение
... возможность выбрать найденного пользователя?
О чём именно идёт речь?
0
0 / 0 / 0
Регистрация: 11.06.2013
Сообщений: 19
09.06.2014, 11:09  [ТС]
Спасибо за цикл, получилось.
По поводу одинаковых атрибутов не совсем согласен, samaccountname - да, он уникален, но атрибут name может совпадать, при условии, что учетки в разных контейнерах...
А на счет возможности выбора я имею в виду возможность выбрать из списка найденных учеток в окне. То есть нашлись учетки, ткнул на нее и далее по клику что-нибудь выполнилось.... надеюсь понятно объяснил? =)
0
Модератор
Эксперт JS
 Аватар для Eva Rosalene
5240 / 2114 / 416
Регистрация: 06.01.2013
Сообщений: 4,845
09.06.2014, 13:00
aandrik, окно невозможно на VBS, подойдет использование HTA.
0
0 / 0 / 0
Регистрация: 11.06.2013
Сообщений: 19
09.06.2014, 13:01  [ТС]
я это всё запихнул в hta-шку уже...
0
Модератор
Эксперт JS
 Аватар для Eva Rosalene
5240 / 2114 / 416
Регистрация: 06.01.2013
Сообщений: 4,845
09.06.2014, 13:25
aandrik, скиньте получившийся код в таком случае, тогда и напишу, что надо изменить.
0
0 / 0 / 0
Регистрация: 11.06.2013
Сообщений: 19
09.06.2014, 13:33  [ТС]
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
<html>
<meta http-equiv="Content-Type" content="text/html" charset="utf-8">
<title> users </title>
<style>
 
</style>
<script language="vbscript">
window.resizeto 580,400
 
sub Main
 
Dim adoCommand, adoConnection
Dim varBaseDN, varFilter, varAttributes
Dim objRootDSE, varDNSDomain, strQuery, adoRecordset, strDN, strName, strResult
Dim varSearchName
 
 
' Setup ADO objects.
Set adoCommand = CreateObject("ADODB.Command")
Set adoConnection = CreateObject("ADODB.Connection")
adoConnection.Provider = "ADsDSOObject"
adoConnection.Open "Active Directory Provider"
Set adoCommand.ActiveConnection = adoConnection
 
' Search entire Active Directory domain.
Set objRootDSE = GetObject("LDAP://RootDSE")
 
varDNSDomain = objRootDSE.Get("defaultNamingContext")
varBaseDN = "<LDAP://" & varDNSDomain & ">"
 
 
 
' Asks samAccountName from user.
'Do
   varSearchName = samaccount.value
   If varSearchName = "" then
      Msgbox "Start to enter username!!!"
   end if
   
'Loop Until varSearchName <> ""
 
 
' Filter on user objects.
varFilter = "(&(objectCategory=person)(objectClass=user)(name="& varSearchName &"*))"
 
' Comma delimited list of attribute values to retrieve.
varAttributes = "samaccountname,distinguishedname"
 
' Construct the LDAP syntax query.
strQuery = varBaseDN & ";" & varFilter & ";" & varAttributes & ";subtree"
adoCommand.CommandText = strQuery
adoCommand.Properties("Page Size") = 1000
adoCommand.Properties("Timeout") = 20
adoCommand.Properties("Cache Results") = False
 
' Run the query.
Set adoRecordset = adoCommand.Execute
 
' Enumerate the resulting recordset.
Do Until adoRecordset.EOF
 
 
' Retrieve values and display.
    'strName = adoRecordset.Fields("samaccountname").Value
    'strDN = adoRecordset.Fields("distinguishedname").value
    strResult = strResult & adoRecordset.Fields("samaccountname").Value & vbNewLine
    showQuery.value = "" & strResult & vbCrLf & ""
    '"Location: " & strDN 
    
        ' Move to the next record in the recordset.
    adoRecordset.MoveNext
    
Loop
 
  'If strName= "" then
  '   Msgbox "No user found with the name '"& varSearchName &"'"
  'end if
 
' close ado connections.
adoRecordset.Close
adoConnection.Close
 
 
 
 
 
end sub
 
</script>
 
<body>
 
 
<a style="color:black">&nbsp;Login : </a>
<input type="text" style="font-weight:bold" name = "samaccount" size="20"> 
</input>
 
<input type="button" id="button" style="color:black; background-color:ccff99; border-color:#ccff66;" value="go!" onclick=Main()>
</input>
 
&nbsp;
<textarea class="FormElement" name="showQuery" id="term" cols="60" rows="15"></textarea>&nbsp; 
 
 
</body>
</html>
0
0 / 0 / 0
Регистрация: 11.06.2013
Сообщений: 19
17.06.2014, 16:56  [ТС]
люди добрые помогите =) проблему так и не решил
0
0 / 0 / 0
Регистрация: 11.06.2013
Сообщений: 19
31.07.2014, 17:43  [ТС]
Еще раз прошу о помощи. Спасибо
0
Модератор
Эксперт JS
 Аватар для Eva Rosalene
5240 / 2114 / 416
Регистрация: 06.01.2013
Сообщений: 4,845
31.07.2014, 18:42
aandrik,
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
<html>
<meta http-equiv="Content-Type" content="text/html" charset="utf-8">
<title> users </title>
<style>
 
</style>
<script language="vbscript">
window.resizeto 580,400
 
sub Main
 
Dim adoCommand, adoConnection
Dim varBaseDN, varFilter, varAttributes
Dim objRootDSE, varDNSDomain, strQuery, adoRecordset, strDN, strName, strResult
Dim varSearchName
 
 
' Setup ADO objects.
Set adoCommand = CreateObject("ADODB.Command")
Set adoConnection = CreateObject("ADODB.Connection")
adoConnection.Provider = "ADsDSOObject"
adoConnection.Open "Active Directory Provider"
Set adoCommand.ActiveConnection = adoConnection
 
' Search entire Active Directory domain.
Set objRootDSE = GetObject("LDAP://RootDSE")
 
varDNSDomain = objRootDSE.Get("defaultNamingContext")
varBaseDN = "<LDAP://" & varDNSDomain & ">"
 
varSearchName = samaccount.value
If varSearchName = "" then
   Msgbox "Start to enter username!!!"
end if
   
varFilter = "(&(objectCategory=person)(objectClass=user)(name="& varSearchName &"*))"
 
varAttributes = "samaccountname,distinguishedname"
 
strQuery = varBaseDN & ";" & varFilter & ";" & varAttributes & ";subtree"
adoCommand.CommandText = strQuery
adoCommand.Properties("Page Size") = 1000
adoCommand.Properties("Timeout") = 20
adoCommand.Properties("Cache Results") = False
 
Set adoRecordset = adoCommand.Execute
 
Do Until adoRecordset.EOF
    showQuery.innerHTML = showQuery.innerHTML & "<option value=""" & adoRecordset.Fields("smamacoountname").Value & """>" & adoRecordset.Fields("samaccountname").Value & "</option>"
    adoRecordset.MoveNext 
Loop
 
adoRecordset.Close
adoConnection.Close
end sub
 
sub clicked()
    Dim objOpts
    set objOpts = showQuery.getElementsByTagName("option")
    for each opt in objOpts
        if opt.selected then
            opt.selected = false
            MsgBox opt.value
        end if
    next
end sub
 
</script>
 
<body>
 
 
<a style="color:black">&nbsp;Login : </a>
<input type="text" style="font-weight:bold" name = "samaccount" size="20"> 
</input>
 
<input type="button" id="button" style="color:black; background-color:ccff99; border-color:#ccff66;" value="go!" onclick=Main()>
</input>
 
<br>
<select class="FormElement" name="showQuery" id="term" multiple style="width: 100%" onclick="clicked()"></select> 
 
 
</body>
</html>
0
2619 / 549 / 109
Регистрация: 21.03.2012
Сообщений: 1,051
31.07.2014, 18:43
aandrik, насколько я понимаю, вся сложность у Вас заключается в динамическом формировании содержимого для тега <select>.
Советую для начала обратиться с этим вопросом в ветку HTML, CSS.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
31.07.2014, 18:43
Помогаю со студенческими работами здесь

Трабл с вводом/выводом
Вот есть код: #include &lt;iostream&gt; #include &lt;fstream&gt; using namespace std; int main(){ setlocale(0,&quot;&quot;); char a; ifstream...

Непонятка с Вводом-выводом
имеется такое дело static void Menu() { Console.WriteLine(&quot; 1 - Ввести список &quot;); ...

работа с вводом/выводом
Здравствуйте!!! Работаю с вводом/выводом и столкнулся со следующей проблемой: в программе вожу целочисленное значение с клавиатуры и затем...

Чёт не так с вводом выводом
В общем вот, пытаюсь создать простейший ввод и вывод массива, который бы заканчивался последним введенным нулём. Объяснтие ньюби пожалуйста...

Консоль с выводом и вводом одновременно
Всем привет, тут такое дело появилось, у меня приложение работает, всё ок и выводит в консоль print-ом, то, что мне нужно, но проблема в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

Новые блоги и статьи
Как украсить новогоднюю елку с Q# и Qiskit
EggHead 24.06.2025
Что может быть необычнее, чем применить законы квантовой механики для украшения новогодней елки? Пока другие развешивают обычные гирлянды, я решил объединить свою страсть к квантовым вычислениям с. . .
Системы нулевого доверия на C#
UnmanagedCoder 24.06.2025
Традиционная архитектура безопасности работает по принципу средневекового замка: создаём высокие стены вокруг корпоративной сети, укрепляем ворота межсетевыми экранами и системами обнаружения. . .
Снова не мой путь. Циклическое среднее, я обеими руками за проверку условия, в ракурсе данной задачи - циклическое среднее в топку.
Hrethgir 24.06.2025
Привет. Такой вопрос - нужно выводить среднее математическое между двумя направлениями, интервал значений которых может лежать в диапазоне одного оборота по кругу. Проблема заключается в том, что. . .
Деплой Flask приложения
py-thonny 23.06.2025
За годы работы с Flask я натыкался на одни и те же грабли достаточно часто, чтобы наконец научится их обходить. И сегодня хочу поделится опытом, который сбережет вам немало нервных клеток. Начнем с. . .
WebAssembly и контейнеры в .NET Aspire для оркестрации распределенных архитектур
ArchitectMsa 23.06.2025
Я наблюдаю, как WebAssembly (или просто WASM) постепенно выходит за рамки своего первоначального предназначения — исполнения кода на стороне браузера. Теперь эта технология проникает в серверную. . .
Непрерывная интеграция для пакета Python
Mr. Docker 22.06.2025
Было 4 часа утра пятницы, когда я выпустил новую версию нашей внутренней библиотеки для обработки данных. Релиз 0. 5. 2 содержал небольшой фикс для обработки дат в ISO формате, что может пойти не так?. . .
Продвинутый ETL на C# из OLTP БД в хранилище
stackOverflow 22.06.2025
Работая в сфере корпоративной аналитики, я постоянно сталкиваюсь с одним и тем же - нужны чистые, структурированные и, главное, свежие данные. Без них современные аналитические системы, машинное. . .
Мастер-класс по микросервисам на Node.js
Reangularity 21.06.2025
Node. js стал одной из самых популярных платформ для микросервисной архитектуры не случайно. Его неблокирующая однопоточная модель и событийно-ориентированный подход делают его идеальным для. . .
Управление Arduino из WPF приложения
Wired 21.06.2025
Зачем вообще связывать Arduino с WPF-приложением? Казалось бы, у Arduino есть собственная среда разработки, своя экосистема, свои способы управления. Однако при создании серьезных проектов. . .
Звёздная пыль
kumehtar 20.06.2025
Я просто это себе представляю: как создавался этот мир. Как энергия слипалась в маленькие частички. Как они собирались в первые звёзды, как во вселенной впервые появился Свет. Как эти звёзды. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru