Kategorien
Scripte

How to read Active Directory (AD) Groups

Als Administrator ist es immer mal wieder notwendig in der AD Struktur bestimmte Gruppen zu ermitteln. Sei es zum Abgleich oder zu anderweitigen Analysen.

AD Icon Graustufen

Als Administrator ist es immer mal wieder notwendig in der AD Struktur bestimmte Gruppen zu ermitteln. Sei es zum Abgleich oder zu anderweitigen Analysen.

Hier gelistet ist der Source Code zu der Prozedur Gruppenmitglieder ermitteln. Umgesetzt in VBS, mit entsprechender graphischer Ein- und Ausgabe.

Start

Dim objADAM    ' Binding object.
Dim objGroup   ' Group object.
Dim objMember  ' Member object.
Dim strPath    ' Binding path.
Dim dc(10)

' Create the Domain - String
Kontrollfeld.Text = ""
Set rootDSE = GetObject("LDAP://rootDSE")
If Err.Number = 0 Then
    DCName = rootDSE.Get("defaultNamingContext")
    Kontrollfeld.Text = Kontrollfeld.Text & DCName
Else
    Kontrollfeld.Text = Kontrollfeld.Text & "Nicht an Domäne angemeldet."
End If

' Construct the binding string.
strPath = OU.Text

' Bind to object.
Set objADAM = GetObject(strPath)

' Output error if bind fails.
If Err.Number <> vbEmpty Then
    Kontrollfeld.Text = Kontrollfeld.Text & "Error:   Bind failed." & vbCrLf
End If

' Enumerate groups and members.
objADAM.Filter = Array("group")
For Each objGroup In objADAM
    Kontrollfeld.Text = Kontrollfeld.Text &_
    "Group:   " & objGroup.Name & vbCrLf
    For Each objMember In objGroup.Members
        Kontrollfeld.Text = Kontrollfeld.Text &_
        objMember.samAccountName & ";" & objMember.LastName &_
        ";" & objMember.GivenName & ";" & objMember.mail & vbCrLf
        Form1.Refresh
        Kontrollfeld.Refresh
    Next
Next

' Output success or error.
If Err.Number <> vbEmpty Then
    Kontrollfeld.Text = Kontrollfeld.Text &_
    "Error:   Enumeration failed." & vbCrLf
Else
    Kontrollfeld.Text = Kontrollfeld.Text &_
    "Success: Enumeration complete." & vbCrLf
End If

Array mit For-Each-Schleife durchlaufen

Standardmäßig durchlaufen Sie ein Array mit einer For-Schleife, etwa um alle Einträge auf dem Bildschirm auszugeben. Das Array lautet beispiels­weise

int[] a={2, 3, 5, 7, 11, 13};

Die For-Schleife lautet dann:

for (int i=0; i<6; i++) System.out.println(a[i]);

Mithilfe einer For-Each-Schleife durchlaufen Sie das Array folgender­maßen:

for (int x : a)    // for each x in a
    System.out.println(x);

Bei der For-Each-Schleife können Sie nicht auf die Index-Positionen der Einträge zugreifen, und Sie können nur lesend auf die Einträge zugreifen.

Sehr elegant lassen sich For-Each-Schleifen schachteln, um mehrdimensionale Arrays zu durchlaufen, beispiels­weise wenn Sie ein mehrdimensionales Array ausgeben möchten.

Die Ausführung bestimmter Tools erfordert spezielle Rechte (administrativer Art). Ich übernehme keinerlei Gewährleistung 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

https://learn.microsoft.com/de-de/dotnet/visual-basic/language-reference/statements/for-each-next-statement

Schreiben Sie einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert