2009-07-07 13 views

Antwort

6

Um bei allen Mitgliedern einer OU zu suchen, versuchen Sie diese ...

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

    ' do something' 

Next 

eine benutzerdefinierte Suche zu tun für DNs try this ...

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 
+0

Ken wollte, wenn ich den "sAMAccountName" Wert für eine bekommen insbesondere Vorname & Name VZ Wert, basierend auf dem ersten Beispiel würde ich tun Wenn ObjOU.FirstName = „Alan“ und ObjOU.LastName = „Smith“ dann sVariable = ObjOU.sAMAccountName das richtig sein? – Frank

+0

Ein besserer Weg wäre, den bestimmten Vornamen/Nachnamen zu verwenden, den Sie in der Abfrage suchen ... strQueryDL = "; (& (objektKategorie = person) (objectClass = user) (firstName = "Alan") (lastName = "Smith"); distinguishedName, adspath; Unterverzeichnis " ... " etwas mit objRS.Fields ("sAMAccountName") tun – KennetRunner

1

Ich musste WinAD von oldskool Benutzername abfragen, dieses .vbs-Skript druckt Benutzerkonten.

  • Fund von SAMAccountName, Verwendung Platzhalter *
  • Druck wenige Attribute von jedem Benutzer-Objekt
  • Verwendung Account filtern seiner optimierten Art und Weise AD Benutzer von Iterieren Objekte

Testskript erhält zunächst einen Benutzer Objekt durch voll qualifizierte Zeichenfolge, es ist nur ein Beispiel. Zweiter Teil wird tatsächlich von smith * filter abgefragt.

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