Как с помощью VBScript получить информацию о пользователе из контроллера домена (AD - Active Directory).
Рассмотрим VBS скрипт, который получает информацию о пользователе из Active Directory используя подключение ADODB.
Ниже представлен полный листинг скрипта
MsgBox GetADInfo("samAccountName","Nikolaev.ON","Title,Department,Company,Mobile") 'distinguishedName Function GetADInfo(ByVal SearchField, ByVal SearchString, ByVal ReturnField) ' Указываем имя домена ("dc=domain, dc=local") Dim adoCommand, strDomain, objConnection strDomain = "dc=3dlan,dc=ru" Set objConnection = CreateObject("ADODB.Connection") objConnection.Open "Provider=ADsDSOObject;" ' Подключаемся Set adoCommand = CreateObject("ADODB.Command") adoCommand.ActiveConnection = objConnection ' Рекурсивный поиск по AD, начиная с корня домена adoCommand.CommandText = _ "<LDАР://" & strDomain & ">;(&(objectCategory=" & "User" & ")" & _ "(" & SearchField & "=" & SearchString & "));" & SearchField & "," & ReturnField & ";subtree" ' создаем набор записей RecordSet Dim objRecordSet Set objRecordSet = adoCommand.Execute If objRecordSet.RecordCount = 0 Then GetADInfo = "not found" ' ничего не найдено Else For i=0 to objRecordSet.Fields.Count - 1 GetADInfo= GetADInfo & vbnewline & objRecordSet.Fields(i) Next 'GetADInfo = objRecordSet.Fields(ReturnField) ' возвращаемое значение End If ' Закрываем подключение objConnection.Close ' Очищаем переменные Set objRecordSet = Nothing Set objCommand = Nothing Set objConnection = Nothing End Function
Рассмотрим скрипт по подробнее
В функции GetADInfo(ByVal SearchField, ByVal SearchString, ByVal ReturnField) указываем домен нужный домен
' Указываем имя домена ("dc=domain, dc=local") Dim adoCommand, strDomain, objConnection strDomain = "dc=3dlan,dc=ru"
Создаём объект ADODB и подключаемся
Set objConnection = CreateObject("ADODB.Connection") objConnection.Open "Provider=ADsDSOObject;" ' Подключаемся Set adoCommand = CreateObject("ADODB.Command") adoCommand.ActiveConnection = objConnection
Ищем учётную запись в домене
' Рекурсивный поиск по AD, начиная с корня домена adoCommand.CommandText = _ "<LDАР://" & strDomain & ">;(&(objectCategory=" & "User" & ")" & _ "(" & SearchField & "=" & SearchString & "));" & SearchField & "," & ReturnField & ";subtree"
Подготавливаем итоговые значения
' создаем набор записей RecordSet Dim objRecordSet Set objRecordSet = adoCommand.Execute If objRecordSet.RecordCount = 0 Then GetADInfo = "not found" ' ничего не найдено Else For i=0 to objRecordSet.Fields.Count - 1 GetADInfo= GetADInfo & vbnewline & objRecordSet.Fields(i) Next 'GetADInfo = objRecordSet.Fields(ReturnField) ' возвращаемое значение End If
Закрываем подключение
objConnection.Close
Очищаем переменные
Set objRecordSet = Nothing Set objCommand = Nothing Set objConnection = Nothing
Вызов самой функции, при этом указываем параметры, которые хотим дополнительно получить в ответе.
MsgBox GetADInfo("samAccountName","Nikolaev.ON","Title,Department,Company,Mobile")
Удачи
Рейтинг:
/5 -
голосов
Комментарии ()