In diesem Skript wird eine Anfrage an Active Directory gestellt und das Ergebnis an der Standardausgabe zurückgegeben. Es wird in SynServer benutzt, um alle Benutzer herauszufinden, die zur SynServer-Gruppe gehören und prinzipiell so aufgerufen (in einer Zeile):
cscript //nologo ldapquery.vbs
"(memberOf=CN=Domänen-Admins,CN=Users,
DC=synserver,
DC=de)"
"sAMAccountName"
Natürlich müssen Sie den Domänen-Namen
DC=synserver,
DC=de an Ihr System anpassen, wenn Sie mit dem Skript experimentieren. Das Skript habe ich aus Beispielen von Microsoft zusammengebaut.
Set ArgObj = WScript.Arguments
if ArgObj.Count<>2 then
wscript.stderr.writeline "ldapquery: Argumentenliste pass nicht"
wscript.quit(0)
else
' Das
ADO connection object und
ADO command object anlegen
Set Con = CreateObject("ADODB.Connection")
Con.Provider = "ADsDSOObject"
Con.Open "Active Directory Provider"
Set ocommand = CreateObject("ADODB.Command")
ocommand.ActiveConnection = Con
' Den ADsPath für die Domäne setzen
Set root = GetObject("LDAP://rootDSE")
sDomain = root.Get("defaultNamingContext")
Set domain = GetObject("LDAP://" & sDomain)
' Den Befehl zusammensetzen und ausführen
sADsPath = "<" & domain.ADsPath & ">"
sFilter = ArgObj.Item(0)
sAttribsToReturn = ArgObj.Item(1)
sDepth = "subTree"
ocommand.CommandText = sADsPath & ";" & sFilter & ";" &
sAttribsToReturn & ";" & sDepth
Set rs = ocommand.Execute
if not rs.EOF then
rs.MoveFirst
While Not rs.EOF
For i = 0 To rs.Fields.Count - 1
if (isArray(rs.Fields(i))) then
for each e in rs.Fields(i).Value
wscript.echo rs.Fields(i).Name&"="&e
next
else
wscript.echo rs.Fields(i).Name & "=" & rs.Fields(i).Value
end if
Next
rs.MoveNext
wscript.echo ""
Wend
end if
end if