Teil 1: Allgemeine Problemstellungen

Shell Scripting unter Windows

Tricks zur Umsetzung

Die meisten Dinge, die einfach aussehen, sind es in Wirklichkeit nicht. Dazu gehört auch das Auslesen des tatsächlichen letzten Logins eines Benutzers. Es gibt zwar im Active Directory das Attribut LastLogon, es wird aber nicht repliziert und ist nur auf dem Domain Controller verfügbar, auf dem sich der Benutzer gerade anmeldet. Was auf dem System des Autors mit einem armen Domain Controller problemlos funktioniert, führt auf produktiven Systemen unweigerlich irgendwann zu der Information „UserXY war noch nie angemeldet“, weil Ihr Shell Script, VBS-Script oder Programm den falschen DC erwischt hat.

Es gibt zwei Lösungen für dieses Problem. Die eine funktioniert auch unter Windows 2000 und besteht einfach darin, der Reihe nach alle Domain Controller abzuklappern und das Attribut Last-Logon des gesuchten Benutzers auszulesen und daraus das aktuellste Datum zu verwenden.

Der andere Weg ist die Verwendung von Windows 2003. Hier gibt es im Schema für das Active Directory ein neues Attribut mit dem Namen LastLogonTimestamp, das ebenfalls die letzte Anmeldung enthält. Dieses Attribut wird aber über alle Domain Controller repliziert. Sollte sich ein Nutzer allerdings mehrmals in kurzen Zeitabständen hintereinander anmelden, würde dies natürlich einen erheblichen Replikationsverkehr bedeuten.

Also wird das Attribut vom DC, der die Anmeldung durchführt, nur dann repliziert, wenn die letzte Anmeldung mindestens 14 Tage zurückliegt. Für die Beantwortung der Administratorenfrage: „Wer hat sich die letzten vier Wochen nicht mehr angemeldet?“ reicht diese Genauigkeit aber aus. Daher müssen Sie auch nicht unbedingt aus dem UTC-Wert des Zeitstempels die lokale Zeit berechnen, wenn der Wert um zwei Wochen danebenliegen kann.

Immerhin, es gibt standardmäßig auch keine Methode, diese Information über das GUI zu erhalten (etwa mit dsa.msc). Hier müssen Sie erst eine Zusatzbibliothek (acctinfo.dll) von Microsoft installieren. Diese können Sie von der Microsoft Website downloaden.