Tags: Windows 10, OS Deployment
Spielt man ein neues Release von Windows 10 über Windows Update oder WSUS ein, dann startet die automatische Installation, sobald das Update für den PC verfügbar ist. Man muss aber nicht einfach die Standardprozedur durchlaufen lassen, sondern kann das Setup über eine Konfigurationsdatei beeinflussen.
Installiert man Windows 10 durch einen expliziten Aufruf von setup.exe, dann kann man das Verhalten der Installationsroutine über eine Reihe von Parametern steuern. Das ist immer dann der Fall, wenn man das Programm vom Installationsmedium startet, entweder für ein In-Place-Update oder eine Wipe and Load, bei man ein bestehendes Windows durch ein (angepasstes) Image überschreibt.
Beim "nativen" Servicing von Windows 10 startet das Setup jedoch selbständig. Der Administrator hat hier scheinbar keine andere Steuerungsmöglichkeit, als die Upgrades über WSUS oder mittels GPO zurückzuhalten. Dem ist aber nicht so. Eine relativ einfache Methode stellt setupconfig.ini dar, in die man die Parameter eintragen kann, die man sonst setup.exe auf der Kommandozeile übergibt.
Konfigurationsdatei auf den PCs einrichten
Diese Datei muss man vor dem Feature-Update in das Verzeichnis
%systemdrive%\Users\Default\AppData\Local\Microsoft\Windows\WSUS\
kopieren. In zentral verwalteten Umgebungen kann man für diesen Zweck die Group Policy Preferences nutzen. Nach erfolgtem Update löscht das Setup diese Datei, so dass man sie für das nächste Mal erneut anlegen muss.
Das ini-Format besteht bekanntlich aus Sektionen mit Überschriften in eckigen Klammern, die eigentlichen Einstellungen folgen dem Muster Name=Wert.
Für setupconfig.ini benötigt man nur einen Header, nämlich
[Setupconfig]
Viele der von setup.exe unterstützten Parameter haben für Upgrades, die über WSUS oder Windows Update kommen, keine Bedeutung. Offensichtlich ist das etwa für die Angabe eines WDS-Servers, weil man bei diesem Verfahren den PC nicht über das Netz booten muss, oder für den Product Key, der ja erhalten bleibt.
Schalter nicht für jedes Verfahren dokumentiert
Allerdings dokumentiert Microsoft nicht im Detail, welche Schalter von setup.exe beim Einspielen eines Upgrades unterstützt werden bzw. eine Wirkung haben. So durchläuft ein Feature-Update zwar auch die OOBE-Phase, aber der Benutzer wird nicht mehr mit den Einstellungen für die Privatsphäre oder Sicherheitsfragen für das Passwort behelligt. Daher bleibt
ShowOOBE=Full
folgenlos.
Einige andere Optionen hingegen funktionieren auch in diesem Kontext. Sie geben dem Administrator zusätzliche Flexibilität und erhöhen die Chance, das Update erfolgreich anzuschließen oder Fehler leichter zu beseitigen.
Warnungen bezüglich Kompatibilität ignorieren
Dieser Aufgabe dient der Parameter
Compat=IgnoreWarning
Damit verhindert man, dass Windows 10 das Setup wegen möglicher Kompatibilitätswarnungen vorzeitig beendet. Das OS ist hier oft sehr sensibel und stößt sich selbst an Kleinigkeiten, die den Erfolg des Vorgangs nicht gefährden.
Mit dieser Einstellung lassen sich die notorischen Abbrüche wegen der angeblich nicht kompatiblen "Microsoft XPS Document Writer" und "Microsoft Print To PDF" verhindern. Beim Auftreten ernsthafter Inkompatibilitäten kommt man um ein Troubleshooting ohnehin nicht herum.
Dynamische Updates verhindern
Windows 10 nutzt dynamische Updates (DU), um das System vor dem eigentlichen Upgrade noch auf den neuesten Stand zu bringen und so die Chancen für eine erfolgreiche Installation der neuen Version zu verbessern.
Dabei spielt Microsoft das letzte kumulative Update ein und aktualisiert problematische Treiber. Außerdem erneuern DUs den Servicing Stack inklusive setup.exe und sorgen dafür, dass installierte Features on Demand (FoD) und Language Packs erhalten bleiben.
In WSUS sind DUs als eigene Produkte vorhanden und können für das Upgrade grundsätzlich auf diesem Weg bereitgestellt werden. Das Problem besteht bloß darin, dass Microsoft nach Windows 10 1803 aufgehört hat, dynamische Updates via WSUS auszuliefern.
Stattdessen holen sich neuere Versionen des Betriebssystems die dynamischen Updates direkt von Windows Update. Das Datenvolumen kann sich dabei auf mehrere hundert MB pro PC belaufen.
Verfügt ein Standort nur über eine langsame Internet-Anbindung, dann sollte man erwägen, dynamische Updates zu deaktivieren, um den ganzen Vorgang zu beschleunigen. Diesem Zweck dient der Eintrag:
DynamicUpdate=Disable
Dadurch erhöht sich jedoch das Risiko, dass ein Feature-Update misslingt. Außerdem wird man FoDs und Language Packs selbst nachinstallieren müssen.
Der Grund für dieses Verhalten von Windows 10 besteht darin, dass die schon lange angekündigte Unified Update Platform auf halbem Weg stecken geblieben ist. Firmenkunden kommen aktuell noch nicht in ihren Genuss, müssen aber mit den Auswirkungen der Umstellung leben. Derzeit ist unklar, ob Windows 10 2004 diesen Zustand beendet.
Höhere Priorität für den Update-Prozess
Das Update läuft normalerweise mit einer niedrigen Priorität im Hintergrund. Bei einem kurzen Zeitfenster für das Aktualisieren des Systems kann man den Vorgang beschleunigen, indem man ihm mehr Leistung zuteilt. Zuständig ist dafür der Eintrag
Priority=Normal
Einige Blog-Einträge empfehlen statt Normal sogar die Verwendung des Wertes High, dieser ist aber in Microsofts Übersicht der Setup-Schalter nicht dokumentiert.
Script zum Ende des Updates ausführen
Nach erfolgter Installation kann eine ganze Reihe von Aufräum- oder Nacharbeiten anstehen. Durch die automatische Ausführung eines Scripts, bevor sich der Benutzer wieder anmelden kann, erhält der Admin hier ein wirkungsvolles Instrument.
In der setupconfig.ini trägt man ein solches Script folgendermaßen ein:
PostOOBE=c:\test.cmd
Ein populärer Anwendungsfall wäre das Entfernen nicht benötigter Store Apps. Bei neueren Versionen von Windows 10 kehren einmal beseitigte Apps nach dem Update zwar nicht mehr zurück, aber wenn man es in der Vergangenheit versäumt hat, bei diesen OS-Zugaben auszumisten, dann bietet sich hier die Gelegenheit dazu.
Für diese Aufgabe benötigt man das Cmdlet Remove-AppxProvisionedPackage, aber das direkte Ausführen eines PowerShell-Scripts würde an der voreingestellten Execution Policy scheitern. Daher trägt man für PostOOBE, wie oben beschrieben, eine Batch-Datei ein und startet aus ihr den Aufruf von PowerShell:
powershell.exe -ExecutionPolicy Bypass -File "C:\RemoveApps.ps1" -WindowStyle Hidden
Um etwa Zune Video zu entfernen, könnte man dann in das Script RemoveApps.ps1 dieses Kommando einfügen:
Remove-AppxProvisionedPackage -Online -PackageName `
Microsoft.ZuneVideo_2019.19101.10711.0_neutral_~_8wekyb3d8bbwe
Weitere Optionen
Für setupconfig.ini stehen noch weitere Parameter zur Verfügung, die sich je nach Anforderung als nützlich erweisen. So kann man die Log-Dateien für eine zentrale Fehleranalyse mit CopyLogs auf ein Netzlaufwerk kopieren.
Steuern kann man zudem das Verhalten der Laufwerksverschlüsselung während des Updates über die Option BitLocker mit den möglichen Werten AlwaysSuspend, TryKeepActive und ForceKeepActive.
Mit DiagnosticPrompt (Werte: Enable | Disable) legt man fest, ob während des Updates die Eingabeaufforderung für das Troubleshooting mit Umschalten + F10 gestartet werden kann.
Zusätzliche oder aktualisierte Treiber lassen sich mit Hilfe der Option InstallDrivers bereitstellen, wobei man hier ein Verzeichnis angibt, in dem sich die .inf-Dateien befinden.
Protokolle auswerten
Das Setup schreibt während des Updates unter c:\windows\panther nicht nur ein Error-Log (setuperr.log), sondern in setupact.log praktisch jeden einzelnen abgearbeiteten Schritt.
Daher lässt sich anhand dieser Datei leicht herausfinden, ob die in der setupconfig.ini enthaltenen Parameter überhaupt berücksichtigt wurden. Dazu sucht man in der Log-Datei nach "Cmdline".
Während man den Erfolg eines PostOOBE-Scripts relativ einfach überprüfen kann, sind die Auswirkungen anderer Einstellungen nicht so ohne weiteres erkennbar. Beispielsweise sieht man während des Vorgangs nicht, ob dynamische Updates aus dem Internet geladen wurden.
Auch die Wirksamkeit von bestimmten Werten für den Parameter Priority lässt sich nicht unmittelbar erkennen. In diesen Fällen hilft ebenfalls ein Blick in die setupact.log. Hier könnte man etwa über die Zeitstempel ausrechnen, ob eine höhere Priorität das Update beschleunigt hat.
Fazit
Über die Datei setupconfig.ini kann man das Windows-Setup auch bei Feature-Updates steuern, wenn man diese über Windows Update oder WSUS bezieht. Sie stellt einige Optionen zur Verfügung, welche den Erfolg und die Dauer des Updates positiv beeinflussen können.
Praktisch ist zudem die Möglichkeit, die Installation mit Hilfe eines Scripts nachzubearbeiten, bevor sich die User zum ersten Mal wieder anmelden.
Täglich Know-how für IT-Pros mit unserem Newsletter
Verwandte Beiträge
- SophiApp: Einstellungen von Windows 10 mit GUI-Tool optimieren
- Windows 10 21H2 ist verfügbar: Aus für SAC, neues Release in 2022, Support bis 2025
- Windows-PCs mit Autopilot bereitstellen
- Windows 10 21H2: Kaum Neuerungen, Upgrade als CU, kürzerer Support für LTSC
- Windows 10 21H1 wird kleines Update, trotzdem bloß 18 Monate Support
Weitere Links