|  | HowTo: | Gesperrte ADS-Benutzerkonten auch ohne die normale Benutzerverwaltung wieder entsperren | 
In den Gruppenrichtlinien-Einstellung von Domänen kann veranlasst werden, dass Benutzerkonten gesperrt werden, wenn innerhalb einer gewissen Zeitspanne zu oft ein falsches Passwort eingegeben wird (Account Lockout). Diese ist eine wichtige Maßnahme gegen das Ausprobieren von Benutzerpasswörtern. Die Freigabe eines gesperrten Benutzerkontos geschieht standardmäßig in ADS Users and Computers in der Registerkarte "Account":

Allerdings ist es oft nicht gewünscht, das First-Level Support mit den Standard-Tools der Benutzerverwaltung arbeitet. Eine Möglichkeit, das Zurücksetzen der Passwörter administrativ zu vereinfachen, wäre ein spezielles Tool: UnLocker von Ension Embedded Network Solutions. Es ermöglicht die Freigabe der Konten, das Auflisten aller gesperrten Accounts und auch die Authentifizierung an verschiedenen Domänen:
VBScript: Benutzer entsperren
Kann man auch mit eigenen, einfachen Mitteln enen gesperrten 
      Benutzer wieder freigeben? Man kann: Eigentlich kontrollieren 
      das LDAP-Attribut lockoutTime, ob und wie 
      lange ein Benutzer gesperrt ist. Dieses Attribut ist jedoch 
      technisch nicht direkt auslesbar und kann somit nicht so leicht 
      direkt als LDAP-Attribut verändert werden. 
      
      Über die ADSI-Schnittstelle jedoch gibt es einen Trick, dies zu erreichen und einen Benutzer 
      wieder zu entsperren. Es handelt sich um die Objekteigenschaft IsAccountLocked (Boolean) . Dies ist jedoch 
      tatsächlich nur eine ADSI-Property und kein echtes LDAP-Attribut! 
      Außerdem klappt der Zugriff auf diese Eigenschaft nur, 
      wenn man den WinNT-Provider verwendet. 
      
      önnte ein entsprechendes Skript aussehen, das ein Benutzerkonto entsperrt:
user.IsAccountLocked = FALSE
Sie müssen hier natürlich den Beispiel-Benutzer "Philipp" durch den entsprechenden Distinguished Name des gewünschten Benutzers ersetzen.
VBScript: Ermitteln, ob ein Benutzer bald gesperrt wird
ADS-Benutzerobjekte haben noch zwei Attribute, die nähere Auskünfte über falsche Passwort-Eingaben des Benutzers machen.
badPwdCount : Wie viele falsche Passwörter hat der Benutzer?
badPasswordTime : Wann wurde das letzt falsche Passwort eingegeben?
Diese beiden Attribute können nur vom System verändert 
      werden (sie unterliegen Beschränkungen des Security Account 
      Managers SAM). Auslesen kann man sie jedoch per ADSI sehr 
      wohl.
      
      Etwas schwierig wird auch die Ausgabe der Ergebnisse, denn 
      bei badPassswordTime handelt es sich um einen 
      64-Bit Large Integer Wert, der die Anzahl der Nanosekunden 
      seit dem 1. Januar 1006 (UTC) angibt. Genau genommen müßte 
      man dann noch die momentane Abweichung des eigenen Rechners 
      von der Coordinated Universal Time (UTC) mit einberechnen, 
      die in der Registry ausgelesen werden kann. Allein beim Lesen 
      des Parameters sollte man die offizielle From der Get-Methode 
      verwenden, außerdem wird dann ein Large Integer Objekt 
      erzeugt, dass man entsprechend komplex behandeln muss.
      
      Ein Beispiel mit einem Benutzer-Namen, den Sie natürlich 
      durch den entsprechenden Distinguished 
    Name des gewünschten Benutzers ersetzen:
pwdCount = user.badPwdCount
Set pwdTime = user.Get("badPasswordTime")
WScript.Echo "Bad Pwd Count: " & pwdCount
WScript.Echo "Bad Pwd Time : " & pwdTime.HighPart & " (High 32 Bit)"
WScript.Echo "Bad Pwd Time : " & pwdTime.LowPart & " (Low 32 Bit)"
Derartige Zeitintervalle lassen sich auch wieder in lesbare Datums- und Zeitangaben umrechnen. Mehr darüber erfahren Sie in den Beschreibungen des badPasswortTime Attributes im SelfADSI Tutorial.


