AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

VBScript: ActiveDirectory

Ein Thema von faux · begonnen am 5. Aug 2005 · letzter Beitrag vom 12. Aug 2005
Antwort Antwort
Benutzerbild von faux
faux

Registriert seit: 18. Apr 2004
Ort: Linz
2.044 Beiträge
 
Turbo Delphi für Win32
 
#1

VBScript: ActiveDirectory

  Alt 5. Aug 2005, 08:49
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.
Faux Manuel
Wer weiß, dass er nichts weiß, weiß mehr, als der der nicht weiß, dass er nichts weiß.
GoTrillian
  Mit Zitat antworten Zitat
jensw_2000
(Gast)

n/a Beiträge
 
#2

Re: VBScript: ActiveDirectory

  Alt 5. Aug 2005, 08:54
Spontan habe ich die Befehle nicht auf Lager, aber lade dir doch den "ADSI Scriptomatic" von Microsoft runter.

Da findest du auf alle Fälle was passendes.

  Mit Zitat antworten Zitat
Benutzerbild von faux
faux

Registriert seit: 18. Apr 2004
Ort: Linz
2.044 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: VBScript: ActiveDirectory

  Alt 5. Aug 2005, 09:37
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.
Faux Manuel
Wer weiß, dass er nichts weiß, weiß mehr, als der der nicht weiß, dass er nichts weiß.
GoTrillian
  Mit Zitat antworten Zitat
jensw_2000
(Gast)

n/a Beiträge
 
#4

Re: VBScript: ActiveDirectory

  Alt 11. Aug 2005, 08:46
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..
  Mit Zitat antworten Zitat
jensw_2000
(Gast)

n/a Beiträge
 
#5

Re: VBScript: ActiveDirectory

  Alt 12. Aug 2005, 19:10
Hier ist das, was du suchst ...
Ich bin ebend eher durch Zufall drauf gestoßen ...

ldapquery.vbs

Code:
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
Schöne Grüße,
Jens
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:20 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz