Форум программистов, компьютерный форум, киберфорум
VBScript/JScript/WSH/WMI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
0 / 0 / 0
Регистрация: 11.06.2013
Сообщений: 19

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

05.06.2014, 17:29. Показов 2296. Ответов 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
5241 / 2115 / 416
Регистрация: 06.01.2013
Сообщений: 4,846
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
5241 / 2115 / 416
Регистрация: 06.01.2013
Сообщений: 4,846
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
5241 / 2115 / 416
Регистрация: 06.01.2013
Сообщений: 4,846
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
Ответ Создать тему
Новые блоги и статьи
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Вот уже год прошел, как у меня домен в reg.ru ...
Etyuhibosecyu 16.04.2026
И ничего они мне не сделали. Если отвязать карту, никакие услуги они не навяжут. Я бы с радостью продлил еще на два года, чтобы не мучиться с временным доменом и меня уже знали по red-star-soft. com,. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru