Active Directory-Scripting

Zum Management von Gruppen gehören die Erstellung von Gruppen und die Zuordnung von Benutzern zu Gruppen. In Verbindung mit den im zweiten Teil beschriebenen Funktionen für das Erstellen von Benutzern lassen sich so die wichtigsten Verwaltungsaufgaben rund um Benutzer abwickeln.

Das Management von Gruppen ist im Vergleich zum Umgang mit Benutzern relativ einfach. Das liegt daran, dass es einerseits deutlich weniger Attribute gibt und dass diese andererseits auch deutlich weniger komplex sind. Themen wie der Umgang mit Kennwörtern, die spezielle Methoden erfordern, treten bei Gruppen nicht auf.

Das Anlegen von Gruppen

Das Anlegen von Gruppen ist relativ einfach. Der Grundansatz findet sich in folgendem Skript:

Set objOU = GetObject("LDAP:// dc=beratung,dc=kuppinger,
dc=com")
Set objGroup = objOU.Create("group", "cn=Finanzen")
objGroup.Put "sAMAccountName", "Finanzen"
objGroup.SetInfo

In diesem Fall wird zunächst ein Objekt für die OU initialisiert. Darin wird eine Gruppe erstellt, für die der SAMAccountName noch gesetzt wird. Dieses Attribut ist zwingend. Alle weiteren Attribute wie Description können auch nachträglich definiert werden.

Allerdings hat dieses Skript eine Einschränkung: Der Typ der Gruppe wird nicht explizit konfiguriert. Diese Einschränkung wird im folgenden Beispiel vermieden:

Const GROUP_TYPE = &h2
Const GROUP_SECURITY = &h80000000
Set objOU = GetObject("LDAP://dc=Beratung,dc=kuppinger,
dc=com")
Set objGroup = objOU.Create("Group", "cn=Finanzen")
objGroup.Put "sAMAccountName", "Finanzmitarbeiter"
objGroup.Put "groupType", GROUP_TYPE Or GROUP_ SECURITY
objGroup.SetInfo

In diesem Fall werden zu Beginn zwei Konstanten definiert. Die eine Konstante legt fest, um welchen Gruppentyp es sich handelt. Der hexadezimale Wert 2 steht für eine globale Gruppe, der Wert 4 für eine domänenlokale Gruppe und der Wert 8 für eine universale Gruppe. Das Grundkonzept der Anwendung ist weitgehend identisch. Der einzige Unterschied liegt darin, dass das Attribut groupType noch explizit gesetzt wird.

Zuordnung von Benutzern zu Gruppen

Der folgende Schritt ist die Zuordnung von Benutzern zu Gruppen. Das folgende Beispiel fügt einen Benutzer zu einer Gruppe hinzu:

Const GROUP_APPEND = 3
Set objGroup = GetObject
("LDAP://cn=Finanzen,cn=Users,dc=beratung,dc=kuppinger,
dc=com")
objGroup.PutEx GROUP_APPEND, "member", Array("cn=MartinK,
dc=Beratung,dc=kuppinger,dc=com")
objGroup.SetInfo

Dabei wird zunächst die Gruppe geöffnet. Für diese wird das Attribut member erweitert, also ein weiteres Mitglied hinzugefügt. Wichtig ist die Konstante, die zu Beginn definiert wird. Über diese wird gesteuert, dass eine Zeichenkette erweitert wird. Die Benutzer werden in einem mehrwertigen Array abgelegt, an den neue Benutzer nur angefügt werden müssen. In dem Array können auch mehrere Benutzer angegeben werden, die jeweils in durch Kommata getrennten und in Anführungszeichen eingeschlossenen Zeichenketten definiert werden.

Wie geht es weiter?

Ein weiterer wichtiger Punkt sind Skripts, mit denen Systemumgebungen für Batches mit sehr vielen Benutzerkonten und Gruppen schnell erzeugt werden können. Das ist beispielsweise für Performance- Tests wichtig, bei denen mehrere hundert oder tausend Benutzer benötigt werden. Auchder Umgang mit mehrwertigen Attributen, die als Array ausgelesen werden müssen, wird in Teil 4 der Serie thematisiert werden.