Administration mehrer PCs ist häufig kein Zuckerschlecken. Gerade in kleineren Betrieben, gerne mit KMU für kleinere und mittelständische Unternehmen abgekürzt, ist es häufig ein Graus, da die Rechner, das Netzwerk und die Server häufig „historisch gewachsen“ sind. Wer hier nicht alle Möglichkeiten kennt und oder nutzt, gehört schnell zu den Turnschuh-Administratoren statt den Klügeren, die sich Einloggen via Remote-Konsole. Ein wichtiges Werkzeug für die Automatisierung von bestimmten Aufgaben, wie bspw. das Aktualisieren von Software oder Kopieren von bestimmten Dateien während des Hochfahrens, lassen sich in Batch- oder Powershell-Skripte packen, die während des Bootvorgangs ausgeführt werden. Bedauerlicherweise stellt sich Windows 8, 8.1 und 10 hier leider quer.
Hibernate / Fast Startup Boot verhindert das Ausführen
Microsoft hat viel beim Bootvorgang optimiert und fährt bei den letzten zwei veröffentlichten Windows-Versionen das Betriebssystem nicht mehr komplett herunter, sondern in einen hybriden Ruhezustand. Im Gegensatz zum normalen Ruhezustand wird aber nicht ausnahmslos alles vom ausgeführten Windows als Abbild auf die Festplatte gespeichert. Das soll Zeit beim Booten einsparen, indem das Abbild von der Festplatte wiederhergestellt wird. Übrigens ist das auch der Grund, warum die Betriebszeit im Taskmanager häufig mehrere Tage beträgt. Dabei werden Skripte, die beim Start ausgeführt werden sollten, leider häufig nicht ausgeführt. Ich konnte bei 20 Rechnern beobachten, dass diese äußerst selten sich noch einmal bemühten, Startskripte auszuführen. Nur beim Neustart wird das Betriebssystem wieder frisch initialisiert statt wie von gestern von der Festplatte aufgetaut zu werden.
Abhilfe durch Registry-Eintrag
Um die Startskripte wieder zuverlässig beim Starten ausgefüht zu bekommen, muss in der Registry der Hibernate Boot deaktiviert werden. Hierzu muss der Schlüssel unter dem Pfad „HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Power\HiberbootEnabled“ auf den Wert 0 gesetzt werden. Dies kann auch per Gruppenrichtlinie in der „Computerkonfiguration“ für alle Rechner einer GPO Policy gesetzt werden.
Leider konnte ich online keinen Hinweis seitens Microsoft oder MVPs daraufhin finden, warum das so ist. Selbst bei Serverfault schien es niemand gesehen zu haben, der ebenfalls schon in die Falle getappt ist, warum eine Startupskript nicht ausgeführt wird.
Weitere Fehlerquellen
Wichtig ist auch noch zu erwähnen, dass es auch einen Haufen anderer Fehler gibt, warum ein Skript nicht ausgeführt wird. Bspw. weil der Ablageort für das Skript von dem Nutzer oder dem Computer nicht zugänglich ist auf Grund von restriktiven Zugriffsrechten. Für die Ablage von Skripten im Netzwerk empfiehlt sich daher das SYSVOL des Domänencontrollers zu nutzen. Ebenso beliebt ist es, dass Powershell-Skripte bei der GPO im Reiter für die Batch-Skripte statt unter dem Reiter „Powershell“ hinzugefügt werden. Interessanterweise musste ich feststellen, dass bei einer fehlerhaften Replikation zwischen Domänencontrollern die Skripte ebenfalls nicht ausgeführt werden. Ein Blick in die Windows Ereignisanzeige hilft hier meist weiter. Um Fehler bei der Gruppenrichtlinie einzuschließen eignet sich „gpresult“ als hilfreiches Werkzeug.
This post is also available in: English (Englisch)
Ich hatte am Wochenende bei einem Kunden genau das Problem! Stichwort Windhoff…