Вопрос по asp-classic, vbscript, active-directory – Опрос Active Directory с использованием VBScript

4

Я хочу запроситьActive Directory используя VBScript (классический ASP). Как я могу это сделать?

Ваш Ответ

3   ответа
6

Set objOU = GetObject("LDAP://OU=YourOU,DC=YourDomain,DC=com")
For each objMember in ObjOU  ' get all the members'

    ' do something'

Next

Чтобы выполнить индивидуальный поиск DN, попробуйте это ...

set conn = createobject("ADODB.Connection")
Set iAdRootDSE = GetObject("LDAP://RootDSE")
strDefaultNamingContext = iAdRootDSE.Get("defaultNamingContext")
Conn.Provider = "ADsDSOObject"
Conn.Open "ADs Provider"

strQueryDL = "<LDAP://" & strDefaultNamingContext & ">;(&(objectCategory=person)(objectClass=user));distinguishedName,adspath;subtree"
set objCmd = createobject("ADODB.Command")
objCmd.ActiveConnection = Conn
objCmd.Properties("SearchScope") = 2 ' we want to search everything
objCmd.Properties("Page Size") = 500 ' and we want our records in lots of 500 

objCmd.CommandText = strQueryDL
Set objRs = objCmd.Execute

While Not objRS.eof

    ' do something with objRS.Fields("distinguishedName")'
    objRS.MoveNext
Wend
Кен, если бы я хотел получить & quot; sAMAccountName & quot; значение для конкретного FirstName & amp; Значение LastName, основанное на вашем первом примере, я бы сделал, если ObjOU.FirstName = & quot; Alan & quot; и ObjOU.LastName = & quot; Смит & quot; then sVariable = ObjOU.sAMAccountName Это будет правильно? Frank
Лучшим способом было бы использовать конкретное имя / фамилию, которую вы ищете в запросе ... strQueryDL = & quot; & lt; LDAP: // & quot; & Амп; strDefaultNamingContext & amp; & quot; & gt ;; (& amp; (objectCategory = person) (objectClass = user) (firstName = & quot; Alan & quot;) (lastName = & quot; Smith & quot;); Однозначный_имя, adspath; поддерево & quot; ... ... сделать что-то с помощью objRS .полей (& Quot; SamAccountName & Quot;) & APOS;
0

Сервисные интерфейсы Active Directory (ADSI)

ADSI Scripting Primer это хорошее место, чтобы начать учиться и найти примеры. (кстати, эти ссылки относятся к Windows 2000, но также действительны для последующих версий Windows).

1

этот скрипт .vbs печатает учетные записи пользователей.

find by sAMAccountname, use * wildcard print few attributes from each user object use AccountType filter its most optimized way of iterating AD user objects

Тестовый скрипт сначала получает пользовательский объект по полной строке, это всего лишь пример. Вторая часть выполняет фактический запрос с помощью фильтра smith *.

WinADSearch.vbs

' c:> cscript -nologo script.vbs
' c:> wscript script.vbs
' http://msdn.microsoft.com/en-us/library/d6dw7aeh%28v=vs.85%29.aspx

' WindowsAD queries
' http://www.kouti.com/tables/userattributes.htm

Option Explicit
'On Error Resume Next

Dim StdOut: Set StdOut = WScript.StdOut

Dim objUser
Set objUser = GetObject("LDAP://CN=Firstname Lastname,OU=Internal Users,OU=MyCompany,OU=Boston,OU=Root,DC=REGION1,DC=COM")
println(objUser.givenName & " " & objUser.middleName & " " & objUser.lastName) 
println("name=" & objUser.name)
println("displayName=" & objUser.displayName)
println("userPrincipalName=" & objUser.userPrincipalName)
println("sAMAccountName=" & objUser.sAMAccountName)
println("distinguishedName=" & objUser.distinguishedName)


println("")
Dim conn, strQueryDL, strAttrs, objCmd, objRs, idx

set conn = createobject("ADODB.Connection")
conn.Provider = "ADsDSOObject"
conn.Open "ADs Provider"

strAttrs = "sAMAccountName,displayName,distinguishedName" ' get attributes

'strQueryDL = "<LDAP://dc=REGION1,dc=COM>;(& (objectCategory=person) );" & strAttrs & ";SubTree"
'strQueryDL = "<LDAP://dc=REGION1,dc=COM>;(& (objectCategory=person)(objectClass=user) );" & strAttrs & ";SubTree"    
'strQueryDL = "<LDAP://dc=REGION1,dc=COM>;(& (objectCategory=person)(objectClass=user)(sAMAccountName=smith*) );" & strAttrs & ";SubTree"

strQueryDL = "<LDAP://dc=REGION1,dc=COM>;(& (samAccountType=805306368)(sAMAccountName=smith*) );" & strAttrs & ";SubTree"

set objCmd = createobject("ADODB.Command")
objCmd.ActiveConnection = Conn
objCmd.Properties("SearchScope") = 2 ' search everything
objCmd.Properties("Page Size") = 100 ' bulk operation

objCmd.CommandText = strQueryDL
println(objCmd.CommandText)
Set objRs = objCmd.Execute
idx=0
do while Not objRS.eof
  idx=idx+1
  println( objRs.Fields("sAMAccountName") & " / " & objRs.Fields("displayName") & " / " & objRs.Fields("distinguishedName") )
  if (idx>5) then exit do
  objRS.MoveNext
loop
objRs.Close
Conn.close
set objRs = Nothing
set conn = Nothing
println("end")


'********************************************************************
Sub println(ByVal str) 
    If (StdOut Is Nothing) Then Exit Sub
    StdOut.WriteLine str
End Sub

Похожие вопросы