![]() |
VBScript: ActiveDirectory
Hallo!
Weiß jemand wie man in VBScript abfrägt, in welcher Organisational Unit (Container) ein Computer eines ActiveDirectorys (Domain) ist? Ich brauche das für ein Logon-Script in einer Domain. Wär echt wichtig. Danke schon mal. Faux PS: Eine Organisational Unit ist ein "Ordner", in dem PCs, User und Gruppen eingeteilt sind. |
Re: VBScript: ActiveDirectory
Spontan habe ich die Befehle nicht auf Lager, aber lade dir doch den
![]() Da findest du auf alle Fälle was passendes. :hi: |
Re: VBScript: ActiveDirectory
Hallo!
Das is schon sowas in der Richtung, was ich suche. Aber das Script, das ich wirklich brauche, ist leider nicht dabei. Das (passendste) Skript vom ADSI: Liest die Daten (OS, User, etc.) eines Computers aus, dessen Organisational Unit bekannt ist. bsp: Eingabe: LDAP://cn=ATSRVLNZ001,ou=Linz,ou=Austria Ausgabe: Windows Server 2003 Ich suche: Ließt Organisational Unit eines Computers aus. bsp: Eingabe: LDAP://ATSRVLNZ001 Ausgabe: Austria\Linz (oder) ou=Linz,ou=Austria (oder ähnlich) Danke schon mal. Faux Edit: Ich will im Endeffekt ein Skript machen (Loginskript), das überprüft, ob der User und der Computer in der selben Organisational Unit sind und andernfalls eine (Fehler)meldung ausgibt. |
Re: VBScript: ActiveDirectory
Hm...
und wenn du mal versuchst anders heranzugehen ? CN's sund ja innerhalb eines Active Directorys eindeitig. Durchlaufe per Script die untergeordneten Objekte der OU's, in denen die User- und Computerobjekte sein sollten. Wenn das Script nicht beide Objekte innerhalb einer OU findet > Fehler... Das ist sicher etwas langsamer, aber ich könnte mir schon vorstellen das es funktioniert.. |
Re: VBScript: ActiveDirectory
![]() Ich bin ebend eher durch Zufall drauf gestoßen ... ldapquery.vbs
Code:
Schöne Grüße,
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 Jens |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:52 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz