WinGet- und YAML-Dateien zur professionellen PC-Konfiguration

  • Mit WinGet können Sie Anwendungen unter Windows mithilfe der Befehlszeile und validierter YAML-Manifeste installieren, aktualisieren und deinstallieren.
  • WinGet-Konfigurationsdateien im YAML-Format beschreiben in Kombination mit DSC deklarativ den gewünschten Zustand des PCs.
  • Die Abschnitte „Assertions“ und „Resources“ steuern Voraussetzungen, Softwareinstallationen, Windows-Einstellungen und die Skriptausführung.
  • Private Repositories, DSC-Module und Gruppenrichtlinien ermöglichen es, dieses deklarative Modell in sicheren Unternehmensumgebungen einzusetzen.

WinGet- und YAML-Dateien zur PC-Konfiguration

Wenn Sie jedes Mal, wenn Sie neue Geräte bekommen, stundenlang Zeit investieren müssen Programme installieren, Windows anpassen und Ihre Entwicklungsumgebung einrichtenEs ist Zeit für Vereinfachung. Mit WinGet und YAML-Dateien können Sie diesen umständlichen Prozess nahezu automatisieren und auf jedem PC mit einem einzigen Befehl wiederholen.

Die Idee besteht darin, in einer Konfigurationsdatei zu beschreiben, was installiert werden soll und wie das System konfiguriert werden soll, und es dann einfach laufen zu lassen. Windows Package Manager (winget) zusammen mit PowerShell Desired State Configuration (DSC) Erledigen Sie die Drecksarbeit: Installieren Sie Software, wenden Sie Einstellungen an, führen Sie Skripte aus und überprüfen Sie, ob sich Ihr Rechner im richtigen Zustand befindet, damit Sie ohne Zeitverschwendung arbeiten können.

Was ist WinGet und warum ist es so nützlich für die Automatisierung Ihres PCs?

WinGet ist der offizielle Paketmanager von Microsoft für Windows 10 und Windows 11.Es funktioniert über die Kommandozeile und ermöglicht das Installieren, Aktualisieren, Konfigurieren und Deinstallieren von Anwendungen auf eine Weise, die der Vorgehensweise unter GNU/Linux mit apt, dnf oder ähnlichen Diensten sehr ähnlich ist, jedoch perfekt in das Windows-Ökosystem integriert.

Anstatt auf Hunderten von Websites nach Installationsprogrammen zu suchen, EXE- oder MSI-Dateien herunterzuladen und auf „Weiter, weiter, akzeptieren“ zu klicken, können Sie mit WinGet einen Befehl wie den folgenden ausführen: winget install Paketname Das System lädt das Programm dann von einer vertrauenswürdigen Quelle herunter, führt die unbeaufsichtigte Installation durch und registriert das Paket für zukünftige Updates.

Die wichtigsten Softwarequellen, die WinGet verwendet, sind: der Microsoft Store und das auf GitHub gehostete Community-RepositoryJede Anwendung wird durch ein YAML-Manifest beschrieben, das unter anderem die Installationsanleitung, die Version und den Integritäts-Hash angibt. Zusätzlich können private Repositories hinzugefügt werden, beispielsweise eines für Ihre Organisation, um interne Software kontrolliert zu verteilen.

Das gesamte WinGet-Ökosystem basiert auf drei Säulen:

  • La CLI winget (der Befehl, den Sie im Terminal verwenden).
  • Die Dienste, die Pakete hosten und validieren.
  • Die YAML-Konfigurationsdateien die es Ihnen ermöglichen, den gewünschten Zustand einer gesamten Maschine deklarativ zu definieren, nicht nur den einzelner Anwendungen.

Winget

Grundlegende WinGet-Befehle zur Verwaltung von Anwendungen

Bevor wir uns mit den technischen Aspekten von YAML-Konfigurationsdateien befassen, ist es hilfreich, die Grundlagen zu verstehen. grundlegende WinGet-Befehle für den täglichen GebrauchDie Steuerung erfolgt über PowerShell, Windows Terminal oder die klassische Eingabeaufforderung.

Wenn Sie einfach schreiben Winget In der Konsole werden Ihnen die installierte Version, die verfügbaren Unterbefehle und eine Übersicht der Optionen angezeigt. Von dort aus können Sie unbesorgt experimentieren.

zu Installieren Sie eine Anwendung Sie verwenden den Unterbefehl „install“. Um beispielsweise Visual Studio Code auf Ihrem PC zu installieren, führen Sie einfach folgenden Befehl aus:

winget install Microsoft.VisualStudioCode

versichern zu lassen. In diesem Fall ist Microsoft.VisualStudioCode ist die genaue Paketkennung. im WinGet-Repository. In vielen Fällen können Sie die Installation auch über den Namen durchführen, wie er im Store angezeigt wird (bei Leerzeichen in Anführungszeichen), aber die Verwendung der ID verringert die Mehrdeutigkeit.

Wenn Sie eine Aktualisieren Sie Ihre ProgrammeSie können WinGet anweisen, alles, was es erkennt, hochzuladen:

winget upgrade --all

Oder Sie könnten sich auf eine bestimmte App konzentrieren, zum Beispiel:

winget upgrade Microsoft.VisualStudioCode

Moderne Versionen von WinGet können nicht nur die von ihnen selbst installierten Programme aktualisieren, sondern auch Anwendungen, die sie auf dem System erkennen und die ein zugehöriges Manifest in ihren Ursprüngen haben.

zu Software deinstallierenDie Mechanik ist genauso einfach:

winget uninstall Microsoft.VisualStudioCode

Die Deinstallation funktioniert, solange WinGet das Programm in seinem Katalog erfasst hat, entweder weil es von WinGet installiert wurde oder weil es es anhand von im System registrierten Informationen erkennt.

Wenn Sie ein Programm suchen müssen, können Sie Folgendes verwenden: Winget-SucheUm beispielsweise zu sehen, welche Optionen für den Editor verfügbar sind:

winget search notepad

Der Befehl gibt eine Liste zurück mit Name, Paket-ID und Herkunft (Community-Repository, Store oder privates Repository), und diese ID sollten Sie zur Sicherheit bei der Installation oder Aktualisierung verwenden.

Wenn Sie wissen möchten, welche Software WinGet auf Ihrem Computer steuert, können Sie Folgendes verwenden:

winget list

Damit erhalten Sie ein Inventar der vom Paketmanager erkannten Anwendungen. Sehr nützlich, um zu entscheiden, was aktualisiert oder in die Konfigurationsdateien aufgenommen werden soll.

Installationen mit YAML-Dateien automatisieren: Die Vorteile dabei

Der wirklich interessante Teil beginnt, wenn man von der Eingabe der Befehle einzeln zu … übergeht. Beschreiben Sie Ihre ideale Umgebung in einer einzigen YAML-Datei.Anstatt mit einer Liste von Befehlen oder einem fehleranfälligen Skript zu arbeiten, definieren Sie deklarativ, wie die Maschine aussehen soll, und delegieren die Arbeit an WinGet und DSC.

Eine WinGet-Konfigurationsdatei enthält die Liste der Pakete, Versionen, Tools, Skripte und Systemeinstellungen Das, was Sie für Ihre Entwicklungsumgebung (oder für das gesamte Unternehmen) benötigen. Es beschränkt sich nicht nur auf die Installation von Programmen: Es kann Windows-Funktionen aktivieren, die Registrierung anpassen, Dienste verwalten, PowerShell-Skripte ausführen… Alles, was nötig ist, um den PC in einen bestimmten Zustand zu versetzen.

Damit dies funktioniert, benötigen Sie eine ausreichend aktuelle Version von WinGet, insbesondere v1.6.2631 oder höherHierbei handelt es sich um den Zeitpunkt, an dem die Integration mit DSC 3.0 und dem Befehl winget configure, der für die Verarbeitung der YAML-Konfigurationsdateien zuständig ist, stabil eingeführt wird.

Der Vorteil besteht darin, dass der Prozess wird unbeaufsichtigt und wiederholbarSie führen einen Befehl aus, akzeptieren die erforderlichen Vereinbarungen und können sich in Ruhe einen Kaffee holen, während das System alles Notwendige installiert, Windows anpasst, Ihre IDEs konfiguriert und die Umgebung für die Nutzung vorbereitet. Und wenn Sie morgen den PC wechseln, wiederholen Sie einfach den Vorgang und können sofort loslegen.

Darüber hinaus können diese Dateien Speichern Sie es in einem Git-Repository, OneDrive oder wo immer Sie möchtenTeilen Sie Versionsänderungen, offene Probleme und Pull-Anfragen mit Ihrem Team… Kurz gesagt: Behandeln Sie die Konfiguration Ihres Rechners als Code (IaC) und nicht als etwas Manuelles und nicht Wiederholbares.

YAML

Der Befehl winget configure und seine wichtigsten Optionen

Das Tor zum gesamten deklarativen System ist der Befehl. winget configure. Diese Funktion liest Ihre WinGet-Konfigurationsdatei, prüft deren Korrektheit, lädt die erforderlichen PowerShell-Module herunter und wendet die Änderungen an.

Bevor man sich darauf einlässt, ist Folgendes ratsam: Konfigurationskomponenten aktivieren (sofern sie nicht bereits aktiv sind) mit:

winget configure --enable

Sobald das erledigt ist, empfiehlt es sich, zunächst die YAML-Datei mit folgendem Befehl zu validieren:

winget configure validate -f ruta\a\archivo.winget

Die Validierungsprüfung umfasst sowohl die YAML-Syntax als JSON-Schema-Konformität Offizielle Konfiguration. Beachten Sie, dass YAML auf Einrückungen (Leerzeichen, nicht Tabulatoren) reagiert. Daher ist die Bearbeitung dieser Dateien in Visual Studio Code mit der Red Hat YAML-Erweiterung und dem verknüpften WinGet-Schema nahezu unerlässlich, um Probleme zu vermeiden.

Wenn alles gut aussieht, können Sie Wenden Sie die Einstellungen ernst mit:

winget configure --file ruta\a\archivo.winget --accept-configuration-agreements

An diesem Punkt kommt der Konfigurationsprozessor zum Einsatz, interpretiert die YAML-Datei, lädt fehlende DSC-Module aus der PowerShell Gallery herunter und beginnt mit der Ausführung von Assertions und Ressourcen. Aufgaben, die dies zulassen, werden parallel ausgeführt. Aufgaben, die dies erfordern, werden parallel ausgeführt. Administratorrechte löst beim Start eine UAC-Warnung wegen zu hoher Flughöhe aus.

Wenn Sie vor jeglichen Änderungen lieber einen „Trockentest“ durchführen möchten, können Sie Folgendes verwenden:

winget configure test -f ruta\a\archivo.winget --accept-configuration-agreements

Mit dem Testverfahren bewertet WinGet das System, indem es es mit dem im Dateiformat beschriebenen Sollzustand vergleicht. Es zeigt Ihnen, was nicht zusammenpasst.Und das, ohne die Maschine überhaupt berührt zu haben. Das ist sehr nützlich, um komplexe Einstellungen anzupassen und sicherzustellen, dass es beim Anwenden der Datei keine Überraschungen gibt.

Es ist auch möglich, mit entfernten Dateien zu arbeiten, die beispielsweise in einem öffentlichen oder privaten Repository gehostet werden, indem man etwa Folgendes ausführt:

winget configure --accept-configuration-agreements --disable-interactivity -f https://tu-servidor/tu-config.winget

Diese Anwendungsmethode eignet sich sehr gut für Szenarien, in denen Masseneinsatz oder zentrale Verwaltungwobei die IT-Abteilung eine Konfiguration veröffentlicht und Benutzer oder Skripte lediglich einen Befehl ausführen müssen, um den Unternehmensrechner mit dem definierten Standard zu belassen.

Argumente, Optionen und Unterbefehle von winget configure

Der Unterbefehl configure unterstützt eine Reihe von Parameter zur Feinabstimmung des Verhaltens. Einige der relevantesten sind:

  • -f, –file. Pfad zur anzuwendenden WinGet-Konfigurationsdatei.
  • –module-path. Lokaler Ordner, in dem die heruntergeladenen DSC-Module gespeichert werden (standardmäßig in %LOCALAPPDATA%\Microsoft\WinGet\Configuration\Modules).
  • –Prozessorpfad. Standort eines benutzerdefinierten Konfigurationsprozessors, falls zutreffend.
  • –accept-configuration-agreements. Akzeptieren Sie die Konfigurationswarnung im Voraus, um eine interaktive Benachrichtigung zu vermeiden.
  • –suppress-initial-details. Um eine übersichtlichere Ausgabe zu erhalten, versuchen Sie, die Details der Ersteinrichtung auszublenden.
  • –enable / –disable. Konfigurationskomponenten aktivieren oder deaktivieren (erfordert Zugriff auf den Store).
  • –logs, –open-logs. Öffnen Sie den Ordner, in dem die Konfigurationsprotokolle gespeichert sind.
  • –verbose, –verbose-logs. Ermöglicht detaillierte Protokollierung zur Fehlerbehebung.
  • –nowarn, –ignore-warnings. Warnmeldungen beim Beenden unterdrücken.
  • –disable-interactivity. Es verhindert jegliche interaktive Eingabeaufforderung und ist daher ideal für unbeaufsichtigte Skripte.
  • –proxy / –no-proxy. Es ermöglicht Ihnen, einen Proxy für diese spezifische Ausführung zu definieren oder die Verwendung eines Proxys zu deaktivieren.

Zusätzlich zum Hauptbefehl, winget configure verfügt über mehrere Unterbefehle. Was sollten Sie wissen:

  • winget configure show -f Die Zeigt Details einer bestimmten Konfigurationsdatei an, was nützlich ist, um diese zu überprüfen, ohne sie in einem Editor öffnen zu müssen.
  • winget configure list. Es zeigt eine Zusammenfassung der auf das System angewendeten Konfigurationen an, was dabei hilft, den Überblick über die ausgeführten Aktionen zu behalten.
  • winget configure test -f Die Verifizierungsmodus, der den aktuellen Zustand des Systems mit dem in der Konfiguration definierten Zustand vergleicht.
  • winget configure validate -f Die Prüfen Sie nur die Datei, ohne die Maschine zu berühren.
  • winget configure export -o Die Es ermöglicht den Export von Konfigurationsressourcen in eine Datei, sei es die Konfiguration aller Pakete (--all), ein bestimmtes Paket (--package-id) oder eine bestimmte Ressource (--module y --resource), und gegebenenfalls an die Ausgabedatei anhängen, falls diese bereits existiert.

Winget

WinGet-Konfigurationsdateiformat und Namenskonvention

WinGet-Konfigurationsdateien verwenden YAML-Format mit zugehörigem JSON-Schema Dies definiert die gültige Struktur. Auch das Manifestsystem von WinGet basiert auf YAML. Somit passt alles in dasselbe Modell.

Konventionsgemäß werden diese Dateien mit der Erweiterung gespeichert. .wingetzum beispiel configuration.wingetBei Projekten, die Git verwenden, wird generell empfohlen, diese in einem versteckten Verzeichnis zu speichern. .configVerlassene Routen wie ./.config/configuration.winget für die "Standard"-Konfiguration des Projekts.

Wenn Ihr Projekt verschiedene Kombinationen von Werkzeugen oder Einstellungen verwendet, können Sie mehrere Konfigurationsdateien im selben Ordner speichern, wobei jede einen beschreibenden Namen trägt, der angibt, welche Umgebung verwendet wird (zum Beispiel, frontend.winget, backend.winget, Etc.).

Die erste Zeile der Datei ist üblicherweise ein spezieller Kommentar, der den Bearbeitern mitteilt, welches JSON-Schema verwendet werden soll. Sie sieht typischerweise etwa so aus:

# yaml-language-server: $schema=https://aka.ms/configuration-dsc-schema/0.2

In Basisrichtung https://aka.ms/configuration-dsc-schema/ Sie können die neueste Schemaversion überprüfen und Ihre Datei aktualisieren, wenn Microsoft neue Versionen mit erweiterten Funktionen veröffentlicht.

Nach diesem Header ist der Wurzelknoten des Dokuments immer immobiliendas ein Feld enthalten muss configurationVersion (zum Beispiel 0.2.0) und die beiden Hauptabschnitte, die alles strukturieren: assertions y resources.

Struktur einer Konfigurationsdatei: Eigenschaften, Zusicherungen und Ressourcen

Unter dem Knoten immobilien Einerseits wird erklärt, dass Konfigurationsversiondie Sie im Zuge der Weiterentwicklung der Datei erhöhen sollten, und andererseits die Sammlungen assertions y resources die das Verhalten beschreiben.

  • Abschnitt Behauptungen. Es umfasst die Annahmen oder Vorbedingungen, die erfüllt sein müssen, damit bestimmte Ressourcen sinnvoll sind: minimale Windows-Version, Vorhandensein einer bestimmten Funktion usw. Es handelt sich dabei nicht um Aktionen an sich, sondern um Umgebungsprüfungen.
  • Abschnitt Ressourcen. Es sammelt alle Konfigurationsressourcen, die Sie anwenden möchten: Softwareinstallationen, Systemeinstellungen, Skripte, Dienstverwaltung, Registry-Änderungen usw. Jeder Eintrag in diesen Listen wird durch einen Knoten vom Typ „“ dargestellt. resource mit den notwendigen Informationen.

In beiden Fällen Jeder Eintrag wird durch Angabe der zu verwendenden DSC-Ressource definiert., mit dem Format {NombreModulo}/{NombreRecursoDSC}. Zum Beispiel Microsoft.Windows.Settings/WindowsSettings um die Windows-Einstellungen zu ändern, oder Microsoft.WinGet.DSC/WinGetPackage um ein WinGet-Paket von DSC zu installieren.

Neben dem Ressourcenfeld enthält jede Einheit üblicherweise Abschnitte von Richtlinien und Einstellungen, eine optionale Kennung id und gegebenenfalls eine Liste der Abhängigkeiten dependsOn in Richtung anderer Ressourcen oder Behauptungen.

Zusicherungen: Windows-Version und sonstige Voraussetzungen prüfen

Die Assertions fungieren als Vorfilter. Dadurch wird entschieden, ob es sinnvoll ist, bestimmte Ressourcen auf dem aktuellen Rechner auszuführen. So wird vermieden, dass etwas auf einem System installiert oder konfiguriert wird, das die grundlegenden Anforderungen nicht erfüllt.

Ein typisches Beispiel ist die Überprüfung der Mindestversion des BetriebssystemsFür viele Konfigurationen wird mindestens Windows 10 Version 1809 oder eine bestimmte Version von Windows 11 benötigt. Es ist sinnlos, fortzufahren, wenn Sie eine ältere Version verwenden, die WinGet nicht einmal unterstützt.

Eine Behauptung dieses Stils verwendet DSC-Ressourcen wie zum Beispiel Microsoft.Windows.Developer/OsVersion, wodurch eine Eigenschaft über die Einstellungen angegeben wird MinVersion (zum Beispiel '10.0.22000'), wodurch der zulässige Schwellenwert für die Konfiguration definiert wird.

Behauptungen können parallel auswertenohne strikte Reihenfolge und gibt im Wesentlichen einen Zustand „wahr“ oder „falsch“ zurück. Wenn die Assertion „falsch“ zurückgibt (nicht erfüllt ist), wird jede Ressource, die sie als Abhängigkeit enthält, über die Assertion aufgerufen. dependsOn Es wird automatisch ausgelassen.

Dieses Verhalten gilt aus Sicht des deklarativen Systems als korrektes Ergebnis: Es ist besser, einen sinnlosen Codeblock zu überspringen, als seine Ausführung in einer ungeeigneten Umgebung zu erzwingen. Die Ausgabemeldungen könnten beispielsweise lauten: „Eine Ressource wurde nicht ausgeführt, da eine Assertion fehlgeschlagen oder falsch war.“

Selbst wenn einige der Einstellungen nicht zutreffen, versucht WinGet dennoch, sie anzuwenden. Setzen Sie die Nutzung anderer unabhängiger Ressourcen fort. Ziel ist es, das System so nah wie möglich an den gewünschten Zustand heranzuführen. Abschließend sind Sie dafür verantwortlich, die Fehler zu überprüfen und zu entscheiden, ob die Konfiguration oder die Umgebung angepasst werden muss.

Ressourcen: Pakete installieren, Windows optimieren und Skripte ausführen

Abschnitt Die Ressourcen bilden den praktischen Kern der Konfigurationsdatei.Hier listen Sie alles auf, was auf dem Rechner geschehen soll: Softwareinstallation, Systemkonfigurationsänderungen, Ausführung von PowerShell-Skripten, Dienstverwaltung usw.

Jede Ressource wird durch ein Feld definiert. resource das folgende Form Modulo/RecursoDSCzum beispiel Microsoft.Windows.Settings/WindowsSettings um Systemfunktionen zu aktivieren, oder Microsoft.WinGet.DSC/WinGetPackage um die Installation eines Pakets über WinGet von DSC aus zu orchestrieren.

Optional können Sie eine/n zuweisen. eindeutige ID was Ihnen dabei helfen wird, darauf zu verweisen dependsOn in anderen Ressourcen. Dies ist sehr nützlich, wenn Sie beispielsweise die Konfiguration zusätzlicher Visual Studio-Komponenten explizit von der vorherigen Installation von Visual Studio selbst abhängig machen möchten.

Innerhalb jeder Ressource, der Abschnitt Direktiven enthalten Kontextinformationen wie es auszuführen ist: textuelle Beschreibung der Aufgabe (description), wenn Vorschaumodule aus der PowerShell Gallery akzeptiert werden (allowPrerelease) Und der securityContext Dies gibt an, ob für die Ausführung erhöhte Berechtigungen erforderlich sind.

Cuando pones Sicherheitskontext: erhöhtWinGet fordert einmalig zu Beginn der Installation Administratorrechte an und kann anschließend Ressourcen mit und ohne erhöhte Rechte mithilfe verschiedener Prozesse ausführen, ohne Sie mit weiteren UAC-Fenstern zu überhäufen.

Abschnitt Die Einstellungen definieren die Name-Wert-Paare. die an die DSC-Ressource übergeben werden. Es kann etwas so Einfaches sein wie DeveloperMode: true um den Windows-Entwicklermodus oder komplexere Parameter wie z. B. zu aktivieren id y source aus einem WinGet-Paket, dem Pfad zu einer .vsconfig-Datei, einem bestimmten Registrierungswert oder den Details eines Dienstes, der aktiviert werden muss.

Schließlich das Feld hängt davon ab Sie können damit festlegen, dass diese Ressource nur ausgeführt werden soll, wenn bestimmte vorherige Prüfungen oder Ressourcen erfolgreich abgeschlossen wurden. Schlägt eine dieser Abhängigkeiten fehl, wird die Ressource automatisch als nicht ausgeführt oder fehlgeschlagen markiert, wodurch unerwünschte Nebenwirkungen vermieden werden.

Gestalten Sie den Ressourcenbereich übersichtlich.

Bei großen Projekten können Konfigurationsdateien ziemlich groß werden, daher lohnt es sich, sich die Zeit dafür zu nehmen. Überlegen Sie sich ein wenig, wie Sie den Ressourcenbereich organisieren. damit es auch langfristig wartungsfähig bleibt.

Eine gängige Strategie besteht darin, Ressourcen nach einem bestimmten Schema zu organisieren. logische Ausführungsreihenfolge:

  1. Zunächst, was das System vorbereitet (Assertions, grundlegende Aktualisierungen).
  2. Dann generische Tools (Browser, Kompressoren, Hilfsprogramme).
  3. Dann IDE und SDK.
  4. Schließlich noch spezifischere Skripte oder Einstellungen.

Ein weiterer interessanter Ansatz ist es, sie zu gruppieren nach Ausfallwahrscheinlichkeit oder KomplexitätMit anderen Worten: Platzieren Sie die Aufgaben, die am häufigsten fehlschlagen (aufwändige Installationen, die von einer guten Verbindung oder Zugangsdaten abhängen) an den Anfang, damit der Benutzer frühzeitig merkt, dass etwas nicht stimmt, ohne warten zu müssen, bis alles abgeschlossen ist.

Viele bevorzugen es, nach Gruppen zu gruppieren. RessourcentypZuerst das WinGet-Paket, dann die Windows-Konfigurationen (Registry, Features, Dienste), dann die Skripte und schließlich die projektspezifischen Tools. Diese Vorgehensweise ähnelt oft der typischen Struktur eines Softwareprojekts und hilft Ihnen, sich schnell zurechtzufinden.

Unabhängig von den Kriterien wird dringend empfohlen, der Datei eine beizufügen. README-Datei im Repository Erläuterung der Konfigurationsstruktur, wichtiger Abhängigkeiten, minimal erforderlicher Windows-Versionen und empfohlener Ausführungsschritte.

Diese Dokumentation bewirkt, dass Andere Entwickler können mit geringerem Risiko zum Archiv beitragen. um etwas kaputt zu machen, da sie besser verstehen, was jeder Block bewirkt und welche Assertions oder dependsOn im Spiel sind, bevor sie eine neue Ressource hinzufügen.

Verwendung der Variable ${WinGetConfigRoot} in Dateipfaden

Viele DSC-Ressourcen akzeptieren Parameter, die Folgendes erwarten Pfade zu bestimmten DateienVisual Studio-Konfigurationen, Skripte, Vorlagen usw. Wenn Sie absolute Pfade verwenden, geht die Portabilität Ihrer Datei verloren, sobald Sie Benutzer, Laufwerke oder Ordner wechseln.

Um dies zu verhindern, führt WinGet die Variable ein. ${WinGetConfigRoot}, das auf das Verzeichnis verweist, aus dem Sie ausführen winget configureVon dort aus können Sie relative Pfade erstellen, die auf jedem Computer funktionieren, auf dem die gleiche Ordnerstruktur eingehalten wird.

Wenn Sie beispielsweise die Konfigurationsdatei speichern in .config/configuration.winget und die Datei .vsconfig Im Stammverzeichnis des Repositorys können Sie einen Pfad wie folgt verwenden: '${WinGetConfigRoot}\..\.vsconfig'. Das Teil .. Wechseln Sie vom Arbeitsordner eine Ebene nach oben und gelangen Sie direkt in das Verzeichnis, in dem sich die Datei .vsconfig befindet.

Diese Technik bewirkt, dass Die gleiche Konfiguration gilt für alle Mitglieder eines Teams. die das Projekt in verschiedene Pfade klonen, solange sie die relative Position der Dateien innerhalb des Repositorys respektieren.

Es ist jedoch wichtig, in der README-Datei darauf hinzuweisen, dass Der Benutzer muss sicherstellen, dass die Zieldatei existiert. im relativen Pfad, der die Konfiguration erwartet, bevor winget configure gestartet wird, oder die Ausführung meldet Fehler bei diesen Ressourcen.

Wo finde ich DSC-Module und sofort einsatzbereite Ressourcen?

Damit dieses gesamte System funktioniert, ist WinGet darauf angewiesen PowerShell-Module, die DSC-Ressourcen implementierenEinige sind standardmäßig im System enthalten (die sogenannten Inbox-Ressourcen), andere werden aus der PowerShell Gallery bezogen.

Zu den Standardressourcen gehören Module, die Sie verwalten müssen. Umgebungsvariablen, MSI-Pakete installieren oder deinstallieren (msiPackage), Registrierungsschlüssel und -werte bearbeiten (Registry), Skriptblöcke ausführen (Script), Windows-Dienste steuern (Service), Rollen und Features hinzufügen oder entfernen (WindowsFeature) oder Prozesse starten und stoppen (WindowsProcess).

La Die PowerShell Gallery enthält Hunderte von zusätzlichen Modulen Mit von der Community beigesteuerten DSC-Ressourcen. Mithilfe der Suchfilter können Sie nur die als „DSC-Ressource“ gekennzeichneten Ressourcen anzeigen lassen und so wiederverwendbare Komponenten für Ihre Konfigurationen finden.

Es ist jedoch wichtig zu beachten, dass die Galerie keine vollständig geprüfte Umgebung darstellt: Jeder kann Module veröffentlichenund einige können riskante oder gar bösartige Skripte enthalten, wenn sie nicht sorgfältig geprüft werden.

Aus diesem Grund besteht Microsoft darauf, dass Ursprung und Inhalt der Module bevor sie in Konfigurationen verwendet werden, die auf Produktionsmaschinen laufen sollen, insbesondere wenn diese Ressourcen in einem Kontext mit hohen Sicherheitsanforderungen ausgeführt werden.

Um konkrete Beispiele für Konfigurationsdateien zu sehen, unterhält Microsoft eine DSC WinGet- und YAML-Konfigurationsrepository Sie können die Datei über den Kurzlink https://aka.ms/dsc.yaml aufrufen. Dort finden Sie Inspiration und können bereits getestete Vorlagen als Grundlage verwenden.

Sicherheit, Vertrauen und Gruppenrichtlinien im Zusammenhang mit WinGet

Da WinGet und DSC können Software in großen Mengen installieren und konfigurierenDer Sicherheitsaspekt ist von grundlegender Bedeutung, insbesondere in Unternehmensumgebungen, in denen recht strenge Compliance-Anforderungen gelten.

WinGet integriert sich über Origin in den Microsoft Store. msstore und wendet Techniken an Zertifikatsnadel um zu überprüfen, ob das HTTPS-Zertifikat des Shops mit einem der bekannten Zertifikate übereinstimmt und so Man-in-the-Middle-Angriffe (MITM) zu verhindern.

In Organisationen, die Firewalls mit SSL-Inspektion einsetzen, kann dieses Verhalten Probleme verursachen, wenn die Sicherheits-Appliance die Verbindung mit einem eigenen Zertifikat neu verpackt. Für solche Fälle gibt es eine Richtlinie namens Umgehung der Zertifikatsbindung für den Microsoft Store Dadurch können Sie festlegen, ob WinGet diese Überprüfung überspringen soll.

Mögliche Optionen sind, die Richtlinie unkonfiguriert zu lassen (wodurch das empfohlene Standardverhalten beibehalten wird) oder sie zu aktivieren, sodass WinGet Das Store-Zertifikat darf nicht validiert werden. oder es explizit deaktivieren, um zu erzwingen, dass nur bekannte Microsoft-Zertifikate akzeptiert werden.

Zertifikatsverankerung deaktivieren erhöht das Risiko von Man-in-the-Middle-AngriffenDaher sollte dies nur bei vollständiger Kenntnis der Fakten und wenn es keine vernünftige Alternative gibt, erfolgen und in eine Gesamtsicherheitsstrategie eingebettet sein.

Zusätzlich zu dieser Direktive gibt es WinGet-spezifische Gruppenrichtlinienvorlagen (.admx- und .adml-Dateien), die Administratoren Folgendes ermöglichen: Steuerung zugelassener oder blockierter Quellen, Aktivierung oder Deaktivierung experimenteller Funktionen, Definition des Verhaltens gegenüber Proxys und prägen im Allgemeinen das Verhalten des Paketmanagers innerhalb der Organisation.

Diese Vorlagen sind im Paket enthalten. DesktopAppInstallerPolicies.zip im WinGet-GitHub-Repository. Nach dem Entpacken werden die Dateien kopiert nach C:\Windows\PolicyDefinitions Der entsprechende Sprachordner ist nun verfügbar und kann über die Gruppenrichtlinienverwaltungskonsole verwaltet werden.

Es gibt auch Gruppenrichtlinienobjekte wie zum Beispiel EnableWindowsPackageManagerConfiguration und EnableWindowsPackageManagerConfigurationExplanation die es ermöglichen, die Verwendung von WinGet-Konfigurationsdateien in der gesamten Organisation zu blockieren, falls diese Funktionalität als streng eingeschränkt angesehen wird.

Zusätzliche Repositories und die Verwendung privater Quellen in WinGet

WinGet verwendet standardmäßig die folgenden Quellen: der Microsoft Store und das Community-Repository auf GitHubHier finden Sie Manifeste für unzählige gängige Programme: Browser, Entwicklungsumgebungen, Design-Tools, verschiedene Hilfsprogramme usw.

Viele Unternehmen benötigen jedoch mehr: private Repositories, in denen Sie Ihre eigenen Anwendungen hosten können, interne Pakete, validierte Versionen bestimmter Tools oder gefilterte Kataloge, die ihren Richtlinien entsprechen.

Mit WinGet können Sie mithilfe des Befehls zusätzliche Quellen registrieren:

winget source add --name <nombre_del_repositorio> --arg <URL_del_repositorio>

Dieser Ursprung ist standardmäßig in der Regel vom Typ REST, obwohl Sie ihn mit --type Falls Sie es benötigen. Darüber hinaus gibt es Parameter wie beispielsweise –Vertrauensstufe um den Grad des Vertrauens (kein Vertrauen oder Vertrauen) zu definieren und –accept-source-agreements Die automatische Übernahme der Quellcode-Lizenzvereinbarungen ist unerlässlich, wenn die Einbindung von Repositories automatisiert werden soll.

Um zu überprüfen, welche Schriftarten aktuell auf Ihrem Computer installiert sind, können Sie folgenden Befehl ausführen:

winget source list

Dieser Befehl gibt alle verfügbaren Quellen mit Namen und Typ zurück. Ab diesem Zeitpunkt berücksichtigt WinGet bei Suchen und Installationen die zusätzlichen Repositories gemäß Ihren konfigurierten Einstellungen.

Es gibt Projekte, die Folgendes anbieten Sofort einsatzbereite Lösungen für private WinGet-Repositories in Azure oder lokalen Installationen mit Docker, was eine beträchtliche Flexibilität beim Einrichten von Unternehmenskatalogen oder kontrollierten Umgebungen bietet, in denen nur von der IT genehmigte Software vorhanden ist.

In der Praxis ermöglicht die Kombination privater Repositories mit gut gestalteten YAML-Konfigurationsdateien Folgendes: die Software- und Gerätekonfiguration vollständig standardisieren eines Unternehmens, mit der Gewissheit, dass alles von einem Ursprung stammt, den Sie selbst kontrollieren.

Mit all dem oben Genannten, WinGet, seinen YAML-Konfigurationsdateien und DSC-Ressourcen wird die mühsame Aufgabe der Vorbereitung und Wartung von Windows-PCs zu einem Prozess wesentlich schneller, wiederholbar und sichererOb Sie nun ein Entwickler sind, der seine Umgebung auf mehrere Computer übertragen möchte, oder Sie einen ganzen Computerpark in einem Unternehmen verwalten und nicht mehr alles manuell erledigen wollen.