Anmelde-Skripte

09.01.2013 | Autor: Mark Heitbrink

Ursprüngliche Quelle
Verfasser: Nils Kaczenski
(Aktualisierung, Textänderungen durch Mark Heitbrink)

Beispiele sind am Ende des Textes zu finden.

Typen von Anmeldeskripts
Active Directory unterstützt mehrere Typen von Anmeldeskripts und verwandten ausführbaren Dateien. Dies sind folgende:

  • Klassische Anmeldeskripts, die einem Benutzerkonto im Reiter Profil zugewiesen sind und im NETLOGON-Verzeichnis des Domänencontrollers liegen.
  • Logon-Skripts: Benutzerkonfiguration / Windows-Einstellungen / Skripts / Anmelden
  • Logoff-Skripts: Benutzerkonfiguration / Windows-Einstellungen / Skripts / Abmelden
  • Startup Skripts: Computerkonfiguration / Windows-Einstellungen / Skripts / Starten
  • Shutdown Skripts: Computerkonfiguration / Windows-Einstellungen / Skripts / Herunterfahren

Genau wie Windows NT unterstützt auch Active Directory die Zuweisung von Anmeldeskripts über die Eigenschaften des Benutzerkontos. Dabei wird nur die Angabe eines Dateinamen erwartet. Der Speicherort des Skripts ist die NETLOGON-Freigabe des Anmeldeservers.

Seit Windows 2000 können Anmeldeskripts klassische Batchdateien sein (*.bat, *.cmd), aber auch WSH-Skripte (VBScript, Jscript usw.), ab Server 2008 sogar Powershell (*.ps1), den passenden Client vorausgesetzt (XP aufwärts für WSH, Windows 7 aufwärts für die Powershell).

Für Clients unter Windows NT 4.0 (bzw. Windows 9x/Me) ist das klassische Anmeldeskript die einzige mögliche Variante der Anmeldeskripts, weil diese Betriebssysteme keine Gruppenrichtlinien ausführen können.

Die Skripte werden nicht sichtbar ausgeführt, d.h. Fehler oder eventuelle Probleme sind nicht offensichtlich. Im Testfall empfiehlt es sich die Skripte sichtbar auszuführen. Dafür können 4 Richtlinien aktiviert werden, je 2 für die Benutzer Skripte und 2 für die des Computers. 

Benutzer-/Computerkonfiguration  \ Administrative Vorlagen \ System  \ Skripts
... skript sichtbar ausführen = aktiviert

Standard Speicherort der Gruppenrichtlinien Skripte:
Sobald man im GP Editor auf einem der Skripte steht und auf "Durchsuchen" klickt, kann man in dem sich öffnenden Fenster eine neue Datei erstellen, z.b.: anmelde.bat und diese direkt als Skript auswählen. Es wird nur der Name der Datei in der GPO definiert, der Pfad ergibt sich automatisch aus der GPO und der Art des Skripts heraus: 

  • \\eure.dom\sysvol\eure.dom\policies\{guid_der_gpo}\User\Logon\
  • \\eure.dom\sysvol\eure.dom\policies\{guid_der_gpo}\User\Logoff\
  • \\eure.dom\sysvol\eure.dom\policies\{guid_der_gpo}\Machine\Startup\
  • \\eure.dom\sysvol\eure.dom\policies\{guid_der_gpo}\Machine\Shutdown\

Vorteil, man muss im GP Editor nur den Skriptnamen angeben, der Pfad wird automatisch gefunden.
Der Nachteil an diesen Pfaden ist: Man findet sie schlecht wieder, wenn das Skript angepasst werden soll.

Besserer Speicherort der Gruppenrichtlinien Skripte, empfohlen:
Man speichert die Skripte im NETLOGON der Domäne, ein alternativer selbstdefinierter Speicherort ist schon wie bei den alten NT4 Skripten nicht erlaubt. Entweder das NETLOGON oder der Pfad innerhalb der Richtlinie im SYSVOL. Jetzt muss das Skript aber komplett inklusive Pfad im Skripnamen des GP Editors angegeben werden.

  • Pfaddefinitionen inkl. Anmelde.bat
  • \\eure.dom\sysvol\eure.dom\scripts\anmelde.bat
  • \\eure.dom\netlogon\anmelde.bat

Kombination von NETLOGON- und GPO-Skripts
Wenn einem Benutzer in den Konteneigenschaften ein NETLOGON-Logon-Skript zugewiesen wird und gleichzeitig über die GPOs ein Skript aktiv wird, werden beide aufgerufen. In Windows 7 laufen zuerst die Anmelde Skripte der Gruppenrichtlinien, danach folgen die klassischen Anmelde Skripte aus den Benutzereigenschaften.

Für eine konsequente Einhaltung der Reihenfolge von Skripten, auch wenn sie per GPO über mehrere OU/Richtlinien hinweg aufgerufen werden, empfehle ich immer folgende Richtlinie auf "Aktiviert" zu setzen

Computerkonfiguration \ Administrative Vorlagen \ System \Skripts
Anmeldeskripts gleichzeitig ausführen = Aktiviert.

Die deutsche Übersetzung ist seit NT4 irrführend und falsch. In Englisch lautet die Richtlinie "Run scripts synchronously". Auch dieser Begriff führt ein wenig in die Irre, denn "synchron" und die parallele Ausführung möchte ich gerade vermeiden. Das Ziel ist eine zeitlich aufeinanderabgestimmte Ausführung der Skripte und er Aufruf des nachfolgenden Skripts, erst, wenn das vorherige beendet wurde. Aber genau DAS! ist "synchronously", bzw. "synchronisiert". Es ist nicht "synchron/parallel", sondern "synchronisiert" eben zeitlich aufeinander abgestimmt und das erreicht man mit der Richtlinie. Ein weiterer wichtiger Apsekt dieser Richtlinie kann man der Erklärung der Richtlinie entnehmen:

Weist das System an, zu warten, bis die Anmeldeskripts zu Ende ausgeführt wurden, bevor das Windows-Explorer-Benutzeroberflächenprogramm gestartet und der Desktop erstellt wird.

Das Bedeutet: Erst wenn alle Skripte beendet sind, wird der Desktop dargestellt und erst jetzt starten die Programme im Autostart, die vorher eventuell fehlgeschlagen sind, da die Laufwerksverbindungen durch das Anmeldeskript noch nicht vollständig bereit standen.