Tags: Software-Distribution, PowerShell, Configuration-Management
Der Windows Package Manager winget bietet in der aktuellen Preview mit configure und pin zwei experimentelle Features. Das erste kann Apps automatisch installieren und auf einem gewünschten Stand halten. Pinning nimmt Programme von Updates aus. Neu ist zudem ein PowerShell-Modul für den Zugriff auf die winget-Funktionen.
Bei winget handelt es sich um einen Paket-Manager, der Programme nach dem Muster von Chocolatey oder Linux-apt von einem Repository installieren, aktualisieren oder auch entfernen kann. Das Kommandozeilen-Tool ist in den aktuellen Versionen von Windows 10 und 11 enthalten.
Alle frei verfügbaren Apps installieren
Eine Stärke des Dienstprogramms besteht darin, dass man damit nicht nur einzelne Anwendungen, sondern das ganze Portfolio an kostenloser Standard-Software in einem Durchgang installieren kann.
Um beispielsweise Firefox, Notepad++, 7-zip und andere Apps mit einem einzigen Befehl auf einem neuen Rechner hinzuzufügen, musste man bisher erst einen Referenz-PC einrichten, um dessen Konfiguration zu exportieren und dann auf anderen Rechnern weiterzuverwenden.
Winget configure
Winget configuration benötigt keinen Muster-PC mehr, sondern erlaubt es, die gewünschte Konfiguration in einer YAML-Datei zu hinterlegen. Mit ihrer Hilfe lässt sich die Installation von Software auf beliebig vielen Rechnern automatisieren.
Der Aufruf erfolgt in der Form
winget configure <YAML-Konfigurationsdatei>
Das Configuration Management von winget beruht auf PowerShell DSC. Es geht über die reine Installation von Software hinaus, weil die Steuerdatei den gewünschten Systemzustand in deklarativer Form beschreibt keine Sammlung von winget-Befehlen enthält.
Daher lassen sich mit winget configure Abweichungen von der definierten Systemkonfiguration auch jederzeit einfach korrigieren. Programme, die nicht darin enthalten sind, werden dann entfernt, und solche, die fehlen, nachinstalliert.
Apps gegen Updates sperren
Ergänzend zur Automatisierung von Updates führt winget mit Pinning die Möglichkeit ein, Anwendungen auf einer bestimmten Version einzufrieren. Dafür existieren drei Varianten:
- Blocking: Das Paket wird bei winget upgrade --all oder winget upgrade <WinGet-Paket> übersprungen. Um ein Upgrade mit WinGet zu erzwingen, muss man das Paket mit dem neuen Schalter --include-pinned entsperren.
- Pinning: Das Paket ist von winget upgrade --all ausgeschlossen, erlaubt jedoch winget upgrade <WinGet-Paket>.
- Gating: Das Paket wird auf bestimmte Versionen festgelegt, zum Beispiel auf 1.2.*. Dadurch werden alle Versionen zwischen 1.2.0 und 1.2.x als zulässige Updates angesehen. Mit
winget upgrade <WinGet-Paket> --force
lässt sich diese Vorgabe überschreiben.
PowerShell-Modul
Bei winget handelt es sich um ein Dienstprogramm für die Kommandozeile, das aber fast alle Vorteile von PowerShell vermissen lässt. So bietet es keine automatische Vervollständigung für Parameter und es liefert keine Objekte, sondern bloßen Text zurück. Diesen muss man parsen, um aus dem Ergebnis schlau zu werden.
Ähnlich wie bei DISM, das die gleichen Nachteile hat, bietet Microsoft nun auch für winget einen PowerShell-Wrapper. Dies erleichtert vor allem die Verwendung des Package-Managers in Scripts.
Das Modul befindet sich derzeit ebenfalls in einer Preview und lässt sich mit
Install-Module Microsoft.WinGet.Client
installieren.
Wie man mit
Get-Command -Module Microsoft.WinGet.Client
leicht feststellen kann, enthält das Modul die nötigen Cmdlets für das Suchen, Installieren, Aktualisieren und Entfernen von Paketen sowie für das Konfigurieren von Repositories.
Verfügbarkeit und Voraussetzungen
Die neuen Features Configuration und Pinning sind derzeit nur für die Preview von winget 1.5x verfügbar. Dort müssen sie über die Konfigurationsdatei aktiviert werden. Die Vorschau man von GitHub herunterladen.
Microsoft.WinGet.Client wurde für PowerShell 7 entwickelt und lässt sich eingeschränkt auch unter Windows PowerShell nutzen.
Täglich Know-how für IT-Pros mit unserem Newsletter
Verwandte Beiträge
- PowerShellGet-Modul aktualisieren, auf PSResourceGet umsteigen
- Programme (remote) mit PowerShell deinstallieren
- Anleitung: PowerShell 7 unter Windows und Linux installieren
- Software verteilen und Updates installieren mit dem kostenlosen Chocolatey
- Desired State Configuration: Zielsysteme festlegen mit ConfigurationData
Weitere Links