Active Directory-Scripting

In diesem Skript wird zunächst eine Konstante definiert, die beim User Flag, also dem Attribut userAccountControl, die Deaktivierung des Benutzerkontos steuert. Dabei wird der Wert 2 verwendet, der die Position des entsprechenden Bits identifiziert. In diesem Fall muss man sich noch nicht allzu viele Gedanken machen, weil der Wert im Dezimal- und Hexadezimalsystem identisch ist. In der Regel ist aber der hexadezimale Wert anzugeben, was durch die Notation &H2 erfolgen würde. Über dieses Bit wird die Aktivierung beziehungsweise Deaktivierung durchgeführt. Anschließend wird wie gehabt ein Benutzer angelegt.

Im Beispiel werden die Werte zunächst geschrieben, bevor das Attribut userAccountControl modifiziert wird. Dabei wird der Wert zunächst überprüft. Falls das Konto nicht aktiviert ist, wird mit einer XOR-Operation das entsprechende Bit geändert und die Information wieder geschrieben. XOR ist ein Operator, der bitweise
arbeitet und in diesem Fall eben das zweite Bit anpasst. Das Ergebnis ist ein aktiviertes Benutzerkonto (Bild 2).

Bild 2: Die OU mit einem deaktivierten und einem aktivierten Benutzer.
Bild 2: Die OU mit einem deaktivierten und einem aktivierten Benutzer.

Damit sind die ersten Attribute für einen Benutzer gesetzt. Der nächste wichtige Schritt ist das Setzen des Kennworts und von Kennwortoptionen. Das Kennwort kann von Benutzern mit entsprechenden Berechtigungen über SetPassword gesetzt werden. Dabei wird eigentlich ein Reset durchgeführt. Das Kennwort wird also auf den neuen Wert zurückgesetzt. Das Listing 3 zeigt, wie diese Methode angewendet wird. Neben dem Setzen von Kennwörtern müssen in den meisten Fällen auch Kennwortoptionen angepasst werden. Die Änderungen werden in zwei Attributen durchgeführt. Beim Attribut userAccountControl können die Einstellungen

Listing 3: Anlegen von Benutzern und Setzen von Kennwörtern
Const ADS_UF_ACCOUNTDISABLE = 2
set ouObject = GetObject("LDAP://ou=Testbenutzer,dc=windowstest,dc=intra")
set userObject = ouObject.Create("user","cn=Testbenutzer5")
userObject.Put "sAMAccountName","Testbenutzer5"
userObject.Put "description", "Fünfter Testbenutzer"
userObject.SetInfo
WScript.Echo "Benutzer wurde angelegt"
intUAC = userObject.Get("userAccountControl")
If intUAC AND ADS_UF_ACCOUNTDISABLE Then
userObject.Put "userAccountControl", intUAC XOR ADS_UF_ACCOUNTDISABLE
userObject.SetInfo
End If
WScript.Echo "Benutzer wurde aktiviert"
userObject.SetPassword "!1ngh24$sDe"

  • Kennwort erforderlich,

  • Kennwort läuft nie ab,

  • Speicherung des Kennworts mit reversibler
    Verschlüsselung

gesetzt werden. Bei pwdLastSet wird dagegen gesteuert, ob das Kennwort bei der nächsten Anmeldung
vom Benutzer geändert werden muss oder nicht. Die Veränderung des Attributs user-AccountControl wurde in den Grundzügen bereits in Listing 2 erläutert. Eine umfassende Dokumentation des Attributs findet sich unter

http://msdn.microsoft.com/library/en-us/adschema/adschema/a_useraccountcontrol.asp

Dort sind alle Teile des Attributs mit ihren jeweiligen hexadezimalen Werten erläutert. Wichtige Werte sind beispielsweise

  • H&20: Kein Kennwort erforderlich.

  • H&40: Der Benutzer kann das Kennwort nicht
    ändern.

  • H&10000: Das Kennwort läuft nie ab.