Windows System

Winget-Befehle im Überblick – Die komplette CLI kennenlernen (4)

Installieren, aktualisieren, entfernen, exportieren, herunterladen oder sogar einen kompletten Windows-PC konfigurieren: Die Winget-Kommandozeile bietet deutlich mehr Möglichkeiten als nur winget install. In diesem Teil unserer Serie lernen Sie die wichtigsten Winget-Befehle kennen und erfahren anhand praktischer Beispiele, wann search, show, upgrade, export, configure, pin, source und die weiteren Werkzeuge zum Einsatz kommen.

7 min Lesezeit
Grafik: Winget-Befehle - Die komplette CLI kennenlernen

Einleitung

In den ersten drei Teilen unserer Winget-Serie haben wir die Grundlagen, die Installation und die Architektur des Windows Package Managers kennengelernt. Jetzt wird es praktisch.

Die Kommandozeile von Winget bildet die zentrale Schnittstelle zur Softwareverwaltung. Über sie lassen sich Programme suchen, installieren, aktualisieren und deinstallieren. Darüber hinaus kann Winget Softwarebestände exportieren, Installationsdateien herunterladen, Paketquellen verwalten, Updates sperren und sogar den gewünschten Zustand eines Windows-Systems definieren.

Eine Übersicht der verfügbaren Befehle erhalten Sie jederzeit mit:

winget --help

Die Hilfe zu einem bestimmten Befehl lässt sich beispielsweise mit

winget install --help

aufrufen.

Welche Befehle tatsächlich vorhanden sind, kann von der installierten Winget-Version abhängen.


search – Pakete suchen

Mit search durchsuchen Sie die konfigurierten Winget-Paketquellen.

Eine einfache Suche nach Firefox sieht beispielsweise so aus:

winget search firefox

Winget liefert passende Pakete einschließlich Name, ID, Version und Quelle zurück.

Besonders empfehlenswert ist die Verwendung der eindeutigen Paket-ID:

winget search --id Mozilla.Firefox

Mit --exact beziehungsweise -e lässt sich eine exakte Übereinstimmung verlangen:

winget search --id Mozilla.Firefox --exact

Gerade in Skripten sollte möglichst mit eindeutigen Paket-IDs gearbeitet werden.


show – Informationen über ein Paket anzeigen

Bevor eine Anwendung installiert wird, können deren Paketinformationen abgefragt werden:

winget show Mozilla.Firefox

Besser ist wiederum die eindeutige ID:

winget show --id Mozilla.Firefox --exact

Je nach Manifest erhalten Sie Informationen beispielsweise über:

  • Hersteller
  • Version
  • Beschreibung
  • Homepage
  • Lizenz
  • Installer
  • Architektur
  • Downloadquelle
  • Tags

show eignet sich daher hervorragend, um ein Paket vor der Installation genauer zu untersuchen.


install – Software installieren

install dürfte der bekannteste Winget-Befehl sein.

Beispiel:

winget install --id Mozilla.Firefox --exact

Winget sucht das Paket, ermittelt den passenden Installer, lädt ihn herunter, überprüft dessen Hash und startet anschließend die Installation.

Für automatisierte Installationen sind häufig zusätzliche Parameter interessant:

winget install --id Mozilla.Firefox --exact --silent

Oder:

winget install --id Mozilla.Firefox --exact --accept-package-agreements --accept-source-agreements

Auch mehrere Pakete können mit aktuellen Winget-Versionen in einem Aufruf angegeben werden. Welche Syntax und Optionen Ihre Version unterstützt, zeigt:

winget install --help

list – Installierte Software anzeigen

Mit

winget list

erhalten Sie eine Übersicht der von Winget erkannten installierten Anwendungen.

Nach einer bestimmten Anwendung kann ebenfalls gesucht werden:

winget list firefox

Oder eindeutig über die Paket-ID:

winget list --id Mozilla.Firefox --exact

list ist besonders für Bestandsaufnahmen und administrative Skripte interessant.


upgrade – Programme aktualisieren

Welche Aktualisierungen verfügbar sind, zeigt:

winget upgrade

Eine einzelne Anwendung lässt sich beispielsweise mit

winget upgrade --id Mozilla.Firefox --exact

aktualisieren.

Besonders praktisch ist:

winget upgrade --all

Damit versucht Winget, alle Anwendungen zu aktualisieren, für die ein geeignetes Update gefunden wurde.

Für weitgehend unbeaufsichtigte Abläufe können je nach Paketen weitere Optionen ergänzt werden:

winget upgrade --all --silent

Vor einem unternehmensweiten automatischen Einsatz sollte jedoch getestet werden, wie sich die jeweiligen Installer verhalten.


uninstall – Programme entfernen

Winget kann Anwendungen nicht nur installieren, sondern auch deinstallieren:

winget uninstall --id Mozilla.Firefox --exact

Alternativ kann nach dem Namen gearbeitet werden:

winget uninstall "Mozilla Firefox"

Die eindeutige Paket-ID ist insbesondere in Skripten vorzuziehen.


export – Softwarebestand exportieren

Winget kann erkannte installierte Anwendungen in eine JSON-Datei exportieren:

winget export -o winget-apps.json

Die erzeugte Datei enthält Paketinformationen und die zugehörigen Quellen. Winget versucht dabei, installierte Anwendungen mit Paketen aus den verfügbaren Sources abzugleichen. Nicht jede lokal installierte Anwendung kann zwangsläufig einem verfügbaren Winget-Paket zugeordnet werden.

Damit eignet sich export beispielsweise für:

  • Rechnerwechsel
  • Neuinstallationen
  • Standardarbeitsplätze
  • Entwickler-PCs
  • Dokumentation
  • Softwareinventarisierung

import – Softwarelisten wieder installieren

Das Gegenstück zu export ist import.

Eine zuvor exportierte Softwareliste lässt sich beispielsweise mit

winget import -i winget-apps.json

wieder einlesen.

Winget versucht anschließend, die in der Datei aufgeführten Pakete zu installieren.

Damit entsteht ein einfacher Mechanismus:

Alter PC
   ↓
winget export
   ↓
JSON-Datei
   ↓
Neuer PC
   ↓
winget import

Gerade beim Neuaufsetzen eines Rechners kann dies viel Arbeit sparen.


download – Installer herunterladen

Winget muss Software nicht unmittelbar installieren.

Mit download lässt sich zunächst nur der Installer herunterladen:

winget download --id Microsoft.PowerToys --exact

Standardmäßig wird der passende Installer in den Download-Ordner des Benutzers geladen. Mit --download-directory lässt sich ein anderes Ziel angeben. Darüber hinaus können beispielsweise Version, Architektur, Plattform und Installer-Typ ausgewählt werden.

Beispiel:

winget download --id Microsoft.PowerToys --architecture x64 --download-directory C:\Winget

Das ist besonders interessant für Administratoren, die Installationsdateien zunächst prüfen oder für Offline-Szenarien vorbereiten möchten.


source – Paketquellen verwalten

Winget kann mehrere Paketquellen verwenden.

Vorhandene Quellen anzeigen:

winget source list

Quellen aktualisieren:

winget source update

Eine neue Quelle lässt sich grundsätzlich über source add hinzufügen:

winget source add --name MeineQuelle --arg https://server.example

Eine Quelle entfernen:

winget source remove MeineQuelle

Bei Problemen können die Quellen außerdem zurückgesetzt werden:

winget source reset --force

Die Source-Verwaltung wird später in einem eigenen Teil unserer Serie ausführlich behandelt.


pin – Updates gezielt kontrollieren

Nicht jede Anwendung soll automatisch auf die neueste Version aktualisiert werden.

Genau dafür besitzt Winget die Pin-Funktion.

Vorhandene Pins anzeigen:

winget pin list

Ein Paket kann beispielsweise mit

winget pin add --id <Paket-ID>

gepinnt werden.

Pins lassen sich anschließend wieder entfernen:

winget pin remove --id <Paket-ID>

Damit können Administratoren verhindern beziehungsweise steuern, dass bestimmte Anwendungen bei normalen Upgrade-Vorgängen ungewollt auf eine andere Version wechseln.


settings – Winget konfigurieren

Mit

winget settings

öffnet Winget seine Konfigurationsdatei im standardmäßig zugeordneten JSON-Editor.

Hier können verschiedene Einstellungen des Clients angepasst werden. Aktuelle Winget-Versionen kennen darüber hinaus Unterbefehle wie export, set und reset für Einstellungen.

Die vollständige Konfiguration behandeln wir später in einem eigenen Artikel.


features – Funktionen überprüfen

Mit

winget features

lässt sich der Status experimenteller Funktionen anzeigen. Microsoft führt neue Möglichkeiten teilweise zunächst als experimentelle Features ein. Der Befehl hilft daher insbesondere Administratoren und Testern dabei festzustellen, welche Funktionen im eingesetzten Client verfügbar sind.


hash – SHA-256-Hash erzeugen

hash ist vor allem für Paketautoren interessant.

Beispiel:

winget hash installer.exe

Winget berechnet damit den SHA-256-Hash einer Installationsdatei. Dieser Wert spielt bei Manifesten eine wichtige Rolle, weil Winget damit die Integrität eines heruntergeladenen Installers überprüfen kann.

Für normale Softwareinstallationen müssen Benutzer diesen Hash nicht selbst erzeugen.


validate – Manifeste überprüfen

Auch validate richtet sich hauptsächlich an Paketautoren.

Ein Manifest kann beispielsweise mit

winget validate --manifest .\manifest.yaml

überprüft werden.

Der Befehl validiert ein Manifest für die Einreichung in das Microsoft Community Package Manifest Repository.

Damit lassen sich viele Fehler erkennen, bevor ein Paket zur Veröffentlichung eingereicht wird.


complete – Kommandozeilen-Vervollständigung

Der Befehl complete unterstützt die Kommandozeilen-Vervollständigung von Winget.

Für den normalen Anwender ist er weniger als interaktiver Alltagsbefehl gedacht. Vielmehr kann er von Shells beziehungsweise Completion-Mechanismen verwendet werden, um passende Argumente und Werte zu ermitteln.

Das erleichtert insbesondere die komfortable Verwendung von Winget in PowerShell.

Welche Optionen Ihre Winget-Version unterstützt, erfahren Sie mit:

winget complete --help

configure – Windows in einen gewünschten Zustand bringen

Mit configure geht Winget weit über die klassische Paketinstallation hinaus.

Eine Winget-Konfigurationsdatei kann nicht nur benötigte Software, sondern auch weitere Einstellungen eines Systems beschreiben. Microsoft setzt dabei auf YAML-formatierte Konfigurationsdateien und PowerShell Desired State Configuration (DSC).

Eine Konfiguration kann beispielsweise mit

winget configure -f .\configuration.dsc.yaml

angewendet werden.

Damit lassen sich reproduzierbare Windows-Umgebungen erstellen – beispielsweise für Entwicklerarbeitsplätze.

Wichtig: Eine fremde Konfigurationsdatei sollte niemals ungeprüft ausgeführt werden. Microsoft empfiehlt ausdrücklich, Inhalt und Vertrauenswürdigkeit der verwendeten Ressourcen vorher zu überprüfen.


configure test – Soll- und Ist-Zustand vergleichen

Besonders interessant ist:

winget configure test -f .\configuration.dsc.yaml

Damit wird nicht einfach die Konfiguration ausgeführt. Stattdessen überprüft Winget, ob der aktuelle Zustand des Rechners dem in der Konfigurationsdatei definierten gewünschten Zustand entspricht. (Microsoft Learn)

Das ist beispielsweise für standardisierte Entwicklerrechner oder administrierte Systeme nützlich.


configure validate – Konfiguration prüfen

Bevor eine Konfigurationsdatei eingesetzt wird, kann sie validiert werden:

winget configure validate -f .\configuration.dsc.yaml

Dabei prüft Winget die Konfigurationsdatei auf ihre Gültigkeit. configure validate ist ausdrücklich von winget validate zu unterscheiden: Der normale validate-Befehl überprüft Paketmanifeste, während configure validate Winget-Konfigurationsdateien validiert.

Diese Unterscheidung ist wichtig.


Welche Befehle braucht man im Alltag?

Für die normale Softwareverwaltung reichen zunächst wenige Befehle:

winget search <Programm>
winget show --id <Paket-ID>
winget install --id <Paket-ID> --exact
winget list
winget upgrade
winget upgrade --all
winget uninstall --id <Paket-ID> --exact

Administratoren werden zusätzlich insbesondere mit folgenden Befehlen arbeiten:

winget export
winget import
winget download
winget source
winget pin
winget settings
winget configure

Paketautoren benötigen darüber hinaus:

winget hash
winget validate

Damit zeigt sich, dass Winget wesentlich mehr ist als ein einfacher Installer.


Praktischer Tipp: Die integrierte Hilfe nutzen

Winget entwickelt sich kontinuierlich weiter. Deshalb ist die integrierte Hilfe eine der wichtigsten Informationsquellen.

Allgemeine Hilfe:

winget --help

Hilfe zu install:

winget install --help

Hilfe zu upgrade:

winget upgrade --help

Hilfe zu configure:

winget configure --help

Damit sehen Sie genau die Befehle und Optionen, die von der tatsächlich installierten Winget-Version unterstützt werden.


Die Winget-CLI deckt nahezu den gesamten Lebenszyklus einer Windows-Anwendung ab. Mit search und show werden Pakete gefunden und geprüft, install, upgrade und uninstall übernehmen die eigentliche Softwareverwaltung und list liefert den lokalen Bestand.

Mit export und import lassen sich Softwarelisten zwischen Rechnern übertragen, während download Installationsdateien für weitere Verarbeitung bereitstellt. source verwaltet Paketquellen und pin ermöglicht eine gezielte Kontrolle von Updates.

Die Befehle hash und validate richten sich insbesondere an Paketautoren. Mit settings und features lässt sich dagegen der Winget-Client selbst untersuchen und konfigurieren.

Besonders mächtig wird Winget schließlich mit configure: Hier entwickelt sich der Paketmanager zu einem Werkzeug für reproduzierbare Windows-Systeme und Desired State Configuration.

Damit kennen wir nun die Werkzeugkiste. In den nächsten Teilen der Serie nehmen wir die wichtigsten Bereiche einzeln auseinander und arbeiten uns von einfachen Softwareinstallationen bis zur professionellen Automatisierung vor.