|
|
Tool zur automatischen Passwortablaufverwaltung unter Vista - von Christian GröbnerDie Informationen in diesem Artikel beziehen sich auf:
Unter Windows XP war man bei der Anmeldung gezwungen sein Kennwort zu ändern,
sofern dies am heutigen Tag abläuft. Bei Vista hat sich dieses Verhalten leider
geändert und man erhält nicht mehr automatisch die Aufforderung zur
Kennwortänderung, sondern bekommt den Hinweis auf den Kennwortablauf über einen
Ballon-Tip angezeigt. Aus eigener Erfahrung musste ich feststellen, dass diese
Änderung nicht gerade wünschenswert ist. Zunächst hatte ich per
Gruppenrichtlinie alle Ballon-Tips deaktiviert, somit sah man nur ein kleines
Schlüsselsymbol in der Taskleiste rechts neben der Uhr, welches ich zunächst für
eine Aktivierungsmeldung von Vista gehalten hatte. Nachdem ich die Ballon-Tips
wieder aktiviert habe erschien auch ein großer Hinweis auf den Kennwortablauf.
Wie jede Fehlermeldung auch, kann man diesen Ballon-Tip einfach ignorieren und
weg klicken, was zumindest die meisten Benutzer machen, denn der Ballon-Tip
fordert einen auf eine Tastenkombination zu drücken, was für den Benutzer in
Arbeit enden könnte. Problem hierbei ist, dass das Kennwort z.B. noch bis 10.30
Uhr gültig ist und sich der Benutzer problemlos vorher anmelden kann. Nach 10.30
Uhr tauchen dann die ersten Probleme mit dem Zugriff auf, da das Kennwort ja
abgelaufen ist und geändert werden muss. Outlook 2007 in Verbindung mit Exchange
2007 sperrt hier den Hahn zu, da z.B. kein Zugriff mehr auf die Webservices von
Exchange 2007 mehr möglich ist. Der Benutzer wird darauf hin aufgefordert in
einem grauen Authentifizierungsfenster gültige Anmeldeinformationen einzugeben.
Gibt der Benutzer jetzt aus lauter Verwirrung diverse Kennwörter ein wird der
Account zusätzlich noch gesperrt, sofern dies konfiguriert ist. Ende vom Lied
ist meistens, dass hier die IT-Administration angerufen wird und nach einer
Lösung gefragt wird. Ist der Account zudem noch gesperrt ist dies ein
zusätzlicher Aufwand, der eigentlich nicht sein müsste.
Die aufgeführten Parameter sind in folgendem Listing rot gekennzeichnet.
Neben dem Skript wird noch eine HTML-Datei benötigt, die den Text für die E-Mail-Benachrichtigung enthält. Dieser Text kann wie folgt aussehen:
Kopieren Sie sich den Inhalt für das Powershell-Skript in eine Textdatei und nehmen Sie danach die Änderungen an den Parametern vor. Speichern Sie die Datei anschließend auf dem Server unter dem Dateinamen password.ps1. Gleiches gilt für die HTML-Datei. Kopieren Sie ebenfalls den Inhalt in eine Textdatei und passen Sie ggf. den Inhalt an. Speichern Sie danach die Datei unter dem Dateinamen password.html ab. 2.1 Funktionsbeschreibung 2.1.1 Main Main beschreibt die Startroutine des Skripts. Zunächst werden die Parameter $days, $container und $query festgelegt. Anschließend werden in einer Schleife die Benutzer ermittelt, deren Kennwort heute abläuft bzw. im Zeitraum bis zu in dem Parameter $days festgeleten Tagen ablaufen wird. Enthält die Suche Benutzer aus dem AD, dann wird geprüft, ob das Kennwort heute abläuft ($day = 0). Sofern dies der Fall ist, wird ein Eintrag im Eventlog vorgenommen und die Kennwortänderung für den Benutzer gesetzt. Läuft das Kennwort in den nächsten Tagen ab, wird der Benutzer per E-Mail darüber benachrichtigt. 2.1.2 Funktion write-Eventlog Die Funktion write-Eventlog fügt der Ereignisanzeige im Anwendungsprotokoll einen Eintrag hinzu, die den Administrator darüber informiert, dass für den Benutzer die Kennwortänderung aktiviert wurde. Der Benutzername wird in der Variable $uname übergeben. Der Text für den Eintrag wird über die Variable $text festgelegt. 2.1.3 Funktion send-EMail Die Funktion send-EMail verschickt die Benachrichtigungen an die Benutzer, dass Ihr Kennwort in x Tagen ablaufen wird. Zu Beginn werden die Parameter $from, $template, $subject und $server festgelegt. Danach wird der Inhalt der in der Variablen $template angegebenen Datei als Body für die E-Mail in die Variable $body geladen. Im Textinhalt der Variablen $body wird anschließend nach den Markierungen #NAME# und #TAGE# gesucht und diese mittels der Methode Replace durch die richtigen Werte ersetzt, die als Parameter ($number und $uname) beim Funktionsaufruf übergeben werden. Im Anschluß wird die E-Mail generiert und an die E-Mail-Adresse des Benutzers, die ebenfalls als Parameter beim Funktionsaufruf ($email) übergeben wird, versendet. Wenn das Kennwort am nächsten Tag abläuft, wird die E-Mail zusätzlich mit hoher Priorität versendet. 3. Erstellen eines geplanten Tasks Öffnen Sie auf dem Server den Servermanager und navigieren Sie zum Knoten Konfiguration -> Aufgabenplanung und starten Sie den Assistenten aus dem Kontextmenü über den Eintrag Einfache Aufgabe erstellen. ![]() Tragen Sie in den Textfeldern einen Namen und eine Beschreibung für den geplanten Task ein und klicken Sie auf die Schaltfläche Weiter. ![]() Geben Sie an, wann der geplante Task ausgeführt werden soll. Wählen Sie dort die Option Täglich aus und klicken Sie auf die Schaltlfäche Weiter. ![]() Tragen Sie als Uhrzeit eine Uhrzeit ein, die auf jeden Fall vor dem Arbeitsbeginn liegt, damit die Benutzerkonten vorher aktualisiert werden. Klicken Sie danach auf die Schaltfläche Weiter. ![]() Wählen Sie in diesem Schritt als Aktion die Option Programm starten aus und klicken Sie auf die Schaltfläche Weiter. ![]() In den Textfeldern Programm und Argumente tragen Sie folgende Werte ein: Programm :%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe Argumente :-psconsolefile "%ProgramFiles%\Quest Software\Management Shell for AD\ConsoleSettings.psc1" -command "&{C:\skripte\password.ps1}" Klicken Sie danach auf die Schaltfläche Weiter. ![]() Setzen Sie den Haken im Kontrollkästchen Beim Klicken auf "Fertig stellen" die Eigenschaften für dies Aufgabe öffnen und beenden Sie den Assistenten. ![]() Setzen Sie unter der Registerkarte Einstellungen den Haken bei Mit höchsten Privilegien ausführen und wählen Sie zudem die Option Unabhängig von der Benutzeranmeldung ausführen. Schließen Sie danach das Fenster über die Schaltfläche OK. Würden Sie den Task jetzt starten, würde das Skript nicht ausgeführt werden, das die Execution-Policy dies verhindert. Standard ist hierbei, dass nur signierte Skripte ausgeführt werden dürfen. Sie können hierfür entweder die Execution-Policy mit dem Powershell-Befehl Set-ExecutionPolicy RemoteSigned herab setzen oder das Skript digital signieren. Näheres zum digitalen signieren von Skritpen lesen sie in diesem Artikel .
Stand: Friday, 28. August 2009/CG. |
|