Hier gelistet ist der Source Code zu der Prozedur Organisationseinheiten (OU) einer Active Directory Struktur ermitteln. Ausgegeben werden die Organisationseinheiten einer Active Directory Struktur. Diese Informationen müsst ihr zuvor der Variablen Domain.Text
zuweisen.
Ihr bekommt die Ausgabe in ein Testfeld. Ich denke es ist kein Problem dieses auch in eine Textdatei umzuleiten. Müsstet ihr ergänzen oder die Wahl ermöglichen.
Hier gelistet ist der Source Code zu der Prozedur Organisationseinheiten (OU) einer Active Directory Struktur ermitteln. Ausgegeben werden die Organinsationseinheiten einer Active Directory Struktur.
Die ganze Funktion habe eingebettet in ein VB6 Formular. Dort besteht ein ein eigener Menüpunkt zur Ausführung der Funktion.
Const ADS_SCOPE_SUBTREE = 2
Const ADS_CHASE_REFERRALS_EXTERNAL = 64
' diesen Domänencontroller abfragen:
Kontrollfeld.Text = ""
ldap = "LDAP://" & Domain.Text 'wird aus dem Feld Domain übernommen
Query = "objectCategory='organizationalUnit'"
' Verbindung einrichten:
Set Connection = CreateObject("ADODB.Connection")
Connection.Provider = "ADsDSOObject"
Connection.Open "Active Directory Provider"
' SQL-Befehl initialisieren:
Set Command = CreateObject("ADODB.Command")
Set Command.ActiveConnection = Connection
Command.CommandText = "select AdsPath from_
'" & ldap & "' where " & Query &_
" ORDER BY whenCreated DESC"
Command.Properties("Page Size") = 10000
Command.Properties("Timeout") = 30
Command.Properties("searchscope") =_
ADS_SCOPE_SUBTREE
Command.Properties("Chase referrals") =_
ADS_CHASE_REFERRALS_EXTERNAL
Command.Properties("Cache Results") = False
Set rs = Command.Execute
' Ergebnis anzeigen
If Not rs.EOF Then
i = 1
tmp = rs.getString
Kontrollfeld.Refresh
Form1.Refresh
While (InStr(1, tmp, Chr(13))) <> 0
laenge = Len(tmp)
komma = InStr(1, tmp, Chr(13))
OUString(i) = Mid(tmp, 1, komma - 1)
Kontrollfeld.Text = Kontrollfeld.Text_
& OUString(i) & vbCrLf
ListeOU.AddItem OUString(i)
rest = laenge - komma
tmp = Right(tmp, rest)
i = i + 1
Kontrollfeld.Refresh
Form1.Refresh
Wend
Else
Kontrollfeld.Text = Kontrollfeld.Text & "Keine Ergebnisse..."
End If
Heute nutze ich für deartige Abfragen Powershell.
Das Cmdlet Get-ADOrganizationalUnit
ruft ein Organisationseinheitsobjekt (OU) auf oder führt eine Suche durch, um mehrere OUs aufzurufen.
Beispiele:
Alle OUs einer Domain ausgeben.
Get-ADOrganizationalUnit -Filter 'Name -like "*"' | FT Name, DistinguishedName -A
Alle OUs unterhalb einer OU ausgeben.
Get-ADOrganizationalUnit -LDAPFilter '(name=*)' -SearchBase 'OU=YZ,DC=AD,DC=DE' -SearchScope OneLevel | FT Name,Country,PostalCode,City,StreetAddress,State
Ihr seht, da gibt es mehrere Möglichkeiten. Mit Powershell ist auch die Programmierung etwas einfacher.
Die Ausführung bestimmter Tools erfordert spezielle Rechte (administrativer Art). Ich übernehme keinerlei Gewähleistung für evtl. auftretende Schäden. Sie benutzen das Tool auf eigene Gefahr. Bitte sichern Sie zuvor Ihre Daten! Ich übernehme keine Gewähr.
Michael Leidig