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 beispielsweise
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 folgendermaß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, beispielsweise wenn Sie ein mehrdimensionales Array ausgeben möchten.