Das Einrichten oder Anpassen von Windows-Konfigurationen mit WinGet und DSC kann recht mühsam sein, insbesondere wenn man Prozesse automatisieren oder mehrere Rechner synchronisieren möchte. Vielleicht haben Sie bereits mit der Installation und Deinstallation von Anwendungen oder Registry-Änderungen mithilfe von YAML-Dateien experimentiert, stoßen aber auf Probleme bei der Anwendung und dem Testen dieser Änderungen, ohne etwas zu beschädigen. Manchmal ist es etwas unübersichtlich, vor allem wegen der Syntax, der Eigenheiten der Befehle oder der Unsicherheit, ob die Konfiguration tatsächlich das tut, was sie soll. Ziel ist es, eine einigermaßen zuverlässige Methode zum Übertragen deklarativer Konfigurationen mit WinGet zu entwickeln, sodass die Umgebung quasi per Code verwaltet wird, anstatt jedes Mal mühsam per Mausklick.
So verwalten Sie Windows-Einstellungen mit WinGet und DSC
Methode 1: Ausführen der von DSC unterstützten WinGet-Konfigurationsbefehle
Wenn Sie sich mit Automatisierung beschäftigen, unterstützt WinGet ab Version 1.6.2631 DSC (Desired State Configuration).Das bedeutet – *Spoiler* –, dass Sie in einer YAML-Datei definieren können, wie Ihr System aussehen soll, und WinGet die Arbeit erledigen lassen. Es ist so, als würden Sie Windows auf einmal anweisen: „Hey, stell sicher, dass Firefox, Notepad++ und PowerToys installiert sind, und 7-Zip kann gerne deinstalliert werden.“
Stellen Sie zunächst sicher, dass Ihre WinGet-Version aktuell ist oder mindestens Version 1.6.2631 oder neuer, da ältere Versionen DSC nicht unterstützen. Falls Sie die DSC-Unterstützung noch nicht aktiviert haben, führen Sie folgenden Befehl aus:
winget configure --enable
Bevor Sie irgendetwas anwenden, sollten Sie unbedingt Ihre YAML-Syntax überprüfen. YAML-Dateien hängen stark von Einrückungen und Leerzeichen ab – niemand möchte einen Fehler wegen eines Tabulators sehen! So überprüfen Sie die Syntax:
winget configure validate winget_configure_dsc_sample_win11.yaml
Dies zeigt Ihnen an, ob Ihr YAML-Code wohlgeformt ist. Korrigieren Sie eventuelle Einrückungsfehler. In manchen Konfigurationen schlägt die Validierung fehl, wenn der YAML-Code fehlerhaft ist, funktioniert aber nach der Korrektur einwandfrei – allerdings nicht immer zuverlässig.
Anwenden der Konfiguration
Sobald Ihre Datei korrekt ist, können Sie die Konfiguration bereitstellen. Stellen Sie sich das so vor, als würden Sie Windows anhand Ihrer YAML-Spezifikation anweisen, die Konfiguration vorzunehmen. Führen Sie Folgendes aus:
winget configure --file winget_configure_dsc_sample_win11.yaml --accept-configuration-agreements
Dieser Befehl liest Ihre YAML-Datei, installiert oder deinstalliert Apps, optimiert Registry-Einstellungen und passt sogar Windows-Funktionen wie beschrieben an. Der ConfigurationRemotingServer.exeProzess startet und wendet alle festgelegten Änderungen an und protokolliert die durchgeführten Aktionen. Ziemlich cool, oder?
Wenn Sie überprüfen möchten, ob Ihre aktuelle Konfiguration mit Ihrer YAML-Datei übereinstimmt, ohne Änderungen vorzunehmen, führen Sie einen Testlauf durch – quasi eine Funktionsprüfung. Der Befehl sieht folgendermaßen aus:
winget configure test -f winget_configure_dsc_sample_win11.yaml --accept-configuration-agreements
Wenn Ihr System noch nicht der YAML-Konfiguration entspricht, erhalten Sie die Meldung „System befindet sich nicht im beschriebenen Konfigurationszustand“.Das bedeutet, dass Sie noch nicht bereit sind, aber das Problem wird beim nächsten vollständigen Deployment behoben.
Weitere Tipps: Verwendung externer YAML-Dateien und App-IDs
Sie möchten noch mehr automatisieren? Sie können Ihre YAML-Konfigurationen auf externen Seiten wie GitHub hosten. Geben Sie dazu einfach die URL an:
winget configure --accept-configuration-agreements --disable-interactivity -f https://raw.githubusercontent.com/yourrepo/yourconfig.yaml
Dadurch wird die automatisierte Bereitstellung auf mehreren Rechnern deutlich vereinfacht – manuelles Kopieren entfällt. Achten Sie lediglich darauf, dass Ihre YAML-Datei die korrekte Einrückung verwendet, insbesondere wenn sie Anwendungs-IDs oder Registry-Änderungen referenziert.
Um beispielsweise die PowerToys-App-ID aus dem Microsoft Store zu finden, führen Sie folgenden Befehl aus:
winget show powertoys -s msstore
Und um Apps anhand ihres Namens zu suchen:
winget search appname
Oder listen Sie die installierten Apps auf:
winget list
Dies ist hilfreich beim Erstellen Ihrer YAML-Datei, da Sie für die Installation/Deinstallation von Apps genaue App-IDs oder Paketnamen benötigen.
Einige Fallstricke und letzte Anmerkungen
YAML reagiert empfindlich auf Einrückungen – verwenden Sie Leerzeichen, keine Tabulatoren. Auf manchen Rechnern können beim erstmaligen Anwenden von Konfigurationen Fehler auftreten, die nach einem Neustart oder erneuten Versuch jedoch auftreten. Behalten Sie außerdem die Protokolle im Auge, um Fehler zu beheben oder die vorgenommenen Änderungen zu überprüfen.
Diese Lösung ist zwar nicht perfekt, aber eine elegante Möglichkeit, Ihre Windows-Umgebung genau so einzurichten, wie Sie es wünschen – egal ob skalierbar oder nur für Ihren Arbeitsplatzrechner. Bedenken Sie jedoch, dass Sie darauf vertrauen, dass die YAML-Dateien korrekt sind. Testen Sie daher zunächst kleinere Konfigurationen, bevor Sie größere Änderungen vornehmen.
Zusammenfassung
- Aktualisieren Sie WinGet mindestens auf Version 1.6.2631, um die DSC-Unterstützung zu nutzen.
- Aktivieren Sie die DSC-Unterstützung mit
winget configure --enable - Validieren Sie Ihre YAML-Dateien mit
winget configure validate - Konfigurationen anwenden mit
winget configure --file yourfile.yaml - Verwenden Sie `winget show` und `winget search`, um Apps und IDs zu finden.
- Optional können Hostkonfigurationen online für die Automatisierung bereitgestellt werden.
- Achten Sie auf die YAML-Einrückung und die Protokolle.
Zusammenfassung
Dieser ganze Prozess kann anfangs etwas knifflig sein, aber sobald man den Dreh raus hat, ist es eine wirklich gute Möglichkeit, die Windows-Einrichtung zu automatisieren. Die YAML-Konfigurationen, insbesondere mit DSC, bieten eine wiederholbare, deklarative Methode, die Umgebung ohne endloses Klicken zu steuern. Ich bin mir nicht sicher, warum es sich manchmal etwas instabil anfühlt, aber hey, es ist Windows – man muss die Eigenheiten einfach lieben. Hoffentlich hilft das jemandem, seinen Workflow zu optimieren oder zumindest ein paar Stunden Herumprobieren zu sparen.