vbscript: benutzerdefinierte LDAP-filtern von Abfragen mit der Suche für alle Computer in der Domäne, aber ohne eine OU oder 2
Wenn ich laufen:
Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
strFilter = "(&(objectClass=computer))"
strAttributes = "name,distinguishedName"
strQuery = strDomainDN & ";" & strFilter & ";" & strAttributes & ";subtree"
Set objCOmmand.ActiveConnection = objConnection
objCommand.CommandText = strQuery
objCommand.Properties("Page Size") = 9999
Set objRecordSet = objCommand.Execute
objRecordSet.MoveFirst
Do Until objRecordSet.EOF
strADObjects = strADObjects & objRecordSet.Fields("Name").Value & vbCrLf
'Wscript.Echo "Location: " & objRecordSet.Fields("DistinguishedName").Value
objRecordSet.MoveNext
Loop
meine Abfrage funktioniert wie ein champ, aber wenn ich versuche zu filtern, die aus einer bestimmten OU, die Schrift entweder ein Fehler ausgegeben oder schließt gar nichts. Ich habe versucht viele verschiedene Varianten innerhalb von strFilter. Gibt es eine Möglichkeit können Sie Abfrage einer domain, für alle Computer, aber ohne die Ergebnisse von einer bestimmten ORGANISATIONSEINHEIT? ...oder Organisationseinheiten??? Ich habe versucht:
strFilter = "(&(objectClass=computer) (!(distinguishedName=*,OU=Computers,DC=mydomain,DC=myTLD)))"
strFilter = "(&(objectClass=computer) (!distinguishedName=*,OU=Computers,DC=mydomain,DC=myTLD))"
strFilter = "(&(objectClass=computer) (!(OU=Computers,DC=mydomain,DC=myTLD)))"
strFilter = "(&(objectClass=computer) (!OU=Computers,DC=mydomain,DC=myTLD))"
kann mir jemand irgendwelche Hinweise, wo ich vielleicht spaßen das? TIA~!
Edit: Auch gefunden und versucht, aber keine worky:
(&(!(ou:dn:=Computers))(objectClass=Computer))
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nevermind, ist es offensichtlich nicht getan werden kann. meine ersten paar versuche nicht arbeiten, weil Sie die "distinguishedName" zurückzuführen ist ein konstruierter Wert, was bedeutet, es kann nicht zum filtern verwendet werden und funktioniert nicht mit Platzhaltern. Meine Antwort gefunden wurde auf die Hey, Scripting Guy! blogs:
http://blogs.technet.com/b/heyscriptingguy/archive/2004/12/07/how-can-i-return-a-list-of-all-my-computers-except-those-in-a-specified-ou.aspx
Kurz gesagt, Sie können nicht tun Sie dies mit LDAP-filtern, müssen Sie wieder die gesamte result-set und dann einen benutzerdefinierten filter verwenden (vbscript, etc.) auf die Ergebnisse.