
Zusätzlich zur Installation von App-Paketen aus dem Repository können Sie den WinGet-Paketmanager für die deklarative Windows-Umgebungskonfiguration verwenden. Die Idee besteht darin, dass der Administrator eine deklarative YAML-Datei erstellt, die den gewünschten Zustand des Computers beschreibt, einschließlich Windows-Einstellungen und erforderlicher Software. Anschließend verwendet WinGet die PowerShell Desired State Configuration (DSC), um Windows automatisch auf den in der YAML-Datei definierten angegebenen Status zu konfigurieren.
WinGet unterstützt die Verwaltung der Computerkonfiguration über DSC ab Version 1.6.2631 (veröffentlicht im Jahr 2023).
Der Befehl „winget configure“ verwendet PowerShell Desired State Configuration (DSC) 3.0, einschließlich der neueren Microsoft DSC 3-Architektur, um Windows automatisch in den gewünschten Zustand zu konfigurieren, der in der Konfigurationsdatei definiert ist. Die YAML-Konfigurationsdatei beschreibt deklarativ den erforderlichen Systemstatus, einschließlich Programminstallationen oder -entfernungen mit ihren Versionen, hinzuzufügenden oder zu entfernenden Windows-Funktionen und -Rollen sowie den erforderlichen Windows- und Anwendungseinstellungen. Durch die Anwendung dieser YAML-Datei wird die Bereitstellung der Umgebung auf einer Windows-Workstation oder einem Windows-Server automatisiert.
Schauen wir uns nun eine einfache YAML-Konfigurationsdatei für Winget an. Meine Beispielkonfiguration diente dazu, mehrere Apps (Firefox, Notepad++ und PowerToys) zu installieren und 7-Zip zu entfernen, falls es installiert war. Außerdem werden Änderungen an der Registrierung vorgenommen (ermöglicht die Sicherung der Windows-Registrierung mithilfe der Option „EnablePeriodicBackup“).
Microsoft Store-Apps können über ihre App-IDs installiert/entfernt werden. Um beispielsweise die PowerToys-App-ID abzurufen, führen Sie Folgendes aus:
„winget show powertoys-s msstore“.

Der Befehl zum Suchen von App-Paketnamen in Winget:
winget search appname
oder zwischen installierten Apps:
„Winget-Liste“.
Ein Beispiel einer solchen YAML-Datei finden Sie in unserem GitHub-Repository https://github.com/maxbakhub/winposh/blob/main/DSC/winget_configure_dsc_sample_win11.yaml

Versuchen wir nun, die Konfiguration aus dieser YAML-Datei über Winget-Konfiguration anzuwenden. Aktivieren Sie zunächst die DSC-Unterstützung in WinGet:
winget configure--enable

Bevor Sie die DSC-Konfiguration anwenden, wird empfohlen, die Syntax der YAML-Datei zu validieren.
Winget-Konfiguration validieren Winget\_configure\_dsc\_sample\_win11.yaml
Wie Python verwenden YAML-Dateien Einrückungen, um die Struktur zu definieren. Sie verwenden Leerzeichen anstelle von Tabulatoren, um verschachtelte Datenblöcke darzustellen.
Wenden Sie nun die Konfiguration aus der YAML-Datei auf den Computer an.
Winget configure--file Winget\_configure\_dsc\_sample\_win11.yaml--accept-configuration-agreements

WinGet liest die Einstellungen aus der YAML-Datei, installiert/entfernt die beschriebenen Apps und wendet die angegebenen Windows-Einstellungen an (der Prozess „ConfigurationRemotingServer.exe“ analysiert die YAML-Datei und wendet die Einstellungen an). Somit erhalten Sie mit nur einem Befehl eine vollständig konfigurierte Windows-Umgebung. Auf dem Bildschirm erscheint ein detailliertes Protokoll der angewendeten DSC-Einstellungen.
Führen Sie einen Probelauf durch, um zu sehen, wie die aktuelle Konfiguration Ihres Computers mit der YAML-Datei übereinstimmt.
Winget configure Test-f Winget\_configure\_dsc\_sample\_win11.yaml--accept-configuration-agreements
Für alle Elemente, die nicht der gewünschten Konfiguration entsprechen, gibt der Befehl Folgendes zurück:
System is not in the described configuration state.

Wenn Sie die YAML-Konfigurationsdatei erneut anwenden, übernimmt Winget Configure nur Änderungen, die von der gewünschten Konfiguration abweichen.
Die Direktive „securityContext: erhöhte“ bedeutet, dass eine einmalige
Die Anweisung bedeutet, dass eine einmalige Aufforderung zur Erhöhung der Benutzerkontensteuerung (UAC) erforderlich ist, um bestimmte Systemkonfigurationseinstellungen anzuwenden.
Mit WinGet können Sie eine YAML-Konfigurationsdatei auf einer externen Webseite als Quelle für die Konfiguration angeben (dadurch kann die Bereitstellung der gewünschten Statuskonfigurationen über GitHub/GitLab automatisiert werden).
Winget configure--accept-configuration-agreements--disable-interactivity-f https://raw.githubusercontent.com/maxbakhub/winposh/refs/heads/main/DSC/winget\_configure\_dsc\_sample\_win11.yaml

Mit WinGet können Administratoren Windows-Maschinen mithilfe deklarativer YAML-Dateien in einem bestimmten Zustand konfigurieren. Dadurch wird die Idempotenz der Konfiguration gewährleistet und der IaC-Ansatz (Infrastructure as Code) für die Windows-Umgebungsverwaltung unterstützt. Mit WinGet mit DSC können Sie ein Ansible-Playbook-Äquivalent für Windows-Geräte implementieren und so eine deklarative, automatisierte Konfigurationsverwaltung ermöglichen.
*️⃣ Quelllink:
WinGet-Paketmanager, ermöglicht die Sicherung der Windows-Registrierung, https://github.com/maxbakhub/winposh/blob/main/DSC/winget_configure_dsc_sample_win11.yaml , , Eingabeaufforderung zur Erhöhung der Benutzerkontensteuerung (UAC),