Seite 1 von 1
Winget Powershell [Suche Hilfe]
Verfasst: 20.11.2025, 17:21
von mpt
ich habe heute das erste Mal von der winget Funktion in Powershell gelesen und bin mir wegen meinem Code unsicher:
winget upgrade --all --include-unknown --uninstall-previous
upgrade --all
installierte alle verfügbare Programme
--include-unknown
installiert alle Programme auch wenn die Version unbekannt ist
--uninstall-previous
deinstalliert die Programme und installiert die neue Version (alle Programme oder nur die mit diesem Installationsweg?)
Meine erste .ps1 Datei war nur mit upgrade --all aber manche Programme wie greenshot musste ich per Hand updaten (neue Version installieren) da es bei Winget zur Fehlemeldung kam (deshalb --inlcude-unknown) und bei Updates von LibreOffice wird die Version deinstalliert und dann neu instaööiert anstatt darüber zu installieren. (deshalb --uninstall-previous)
Bitte gibt mir eine Meldung ob der Code so richtig ist.
Re: Winget Powershell [Suche Hilfe]
Verfasst: 20.11.2025, 17:47
von DK2000
LibreOffice wird grundsätzlich vorher deinstalliert, egal wie man das updaten will.
Greenshot sollte ohne Probleme gehen, sofern ma es über de .exe installiert hat.
--uninstall-previous ist ein allgemeiner Schalter für die Aufgabe. Alle Anwendungen, welche aktualisiert werden sollen, werden vorher deinstalliert, was nicht unbedingt von Vorteil ist. Würde ich weglassen oder nur bei bestimmten Anwendungen verwenden.
--include-unknown funktioniert oder auch nicht. Der Schalter verwende ich da eigentlich nicht mehr. Hatte bei mir nie einen brauchbaren Effekt.
Alle Schalter sind als allgemein anzusehen, sofern keine ID für die Anwendung direkt angegeben wird.
Alternativ kannst Du auch die WinGet Cmdlets verwenden: Get-Command -Module Microsoft.WinGet.Client
Die sind für eine .ps1 besser geeignet, auch wenn nicht so wirklich. WinGet selber ist eigentlich für die CMD.exe (Eingabeaufforderung) und .cmd Dateien gedacht.
Re: Winget Powershell [Suche Hilfe]
Verfasst: 20.11.2025, 19:08
von mpt
danke für deine Rückmeldung dann nehme ich nur den all Befehl.
Für was ist der Befehl da und was macht er?
Get-Command -Module Microsoft.WinGet.Client
Bei mir hat der Befehl nichts ausgelöst aber ich habe diesen auch ohne den winget Befehl benutzt - also eine .ps1 nur mit dem Befehl.
Re: Winget Powershell [Suche Hilfe]
Verfasst: 20.11.2025, 19:13
von mpt
DK2000 hat geschrieben: 20.11.2025, 17:47
Alle Schalter sind als allgemein anzusehen, sofern keine ID für die Anwendung direkt angegeben wird.
Das ist spannend weil die Powershell mit dem Updatebefehl will ich hauptsächlich für von mir installierte Software benutzen, die sich nicht selber updatet und das ist nervig wegen manuell Datei herunterladen und dann instllaieren.
Wo finde ich die ID für die Software und wie installiere ich dadurch Updates?
Re: Winget Powershell [Suche Hilfe]
Verfasst: 20.11.2025, 19:27
von DK2000
Das Problem ist, wenn 'update --all' nicht funktioniert, ist es meistens egal. was man da noch angibt. Es wird dann nie richtig funktionieren. Und gerade bei Updates, wo die Version nicht ermittelt werden kann, ist das schwierig. Das ist so eine Schwachstelle von winget. Bei eignen Anwendungen lässt sich das umgehen, wenn man die Anwendung mit winget selber installiert. Aber meisten scheitert es dann trotzdem beim Update.
Die ID für die bereits installierten Anwendungen ermitteln:
winget list
In der Spalte "ID" steht dann die ID, z.B. 7zip.7zip oder Microsoft.Edge. Funktioniert aber nur mit den Quellen "msstore" oder "winget". Wenn in der Spalte Quelle nichts steht, dann geht das über winget auch nicht. Und Anwendungen über den Store sind auch so ein Fall für sich.
Get-Command -Module Microsoft.WinGet.Client
Direkt in der Powershell eingeben. Sollte dann so eine Ausgabe kommen:
Code: Alles auswählen
CommandType Name Version Source
----------- ---- ------- ------
Alias Get-WinGetSettings 1.10.340 Microsoft.WinGet.Client
Alias Get-WinGetUserSettings 1.10.340 Microsoft.WinGet.Client
Alias Set-WinGetUserSettings 1.10.340 Microsoft.WinGet.Client
Alias Test-WinGetUserSettings 1.10.340 Microsoft.WinGet.Client
Cmdlet Add-WinGetSource 1.10.340 Microsoft.WinGet.Client
Cmdlet Assert-WinGetPackageManager 1.10.340 Microsoft.WinGet.Client
Cmdlet Disable-WinGetSetting 1.10.340 Microsoft.WinGet.Client
Cmdlet Enable-WinGetSetting 1.10.340 Microsoft.WinGet.Client
Cmdlet Export-WinGetPackage 1.10.340 Microsoft.WinGet.Client
Cmdlet Find-WinGetPackage 1.10.340 Microsoft.WinGet.Client
Cmdlet Get-WinGetPackage 1.10.340 Microsoft.WinGet.Client
Cmdlet Get-WinGetSetting 1.10.340 Microsoft.WinGet.Client
Cmdlet Get-WinGetSource 1.10.340 Microsoft.WinGet.Client
Cmdlet Get-WinGetUserSetting 1.10.340 Microsoft.WinGet.Client
Cmdlet Get-WinGetVersion 1.10.340 Microsoft.WinGet.Client
Cmdlet Install-WinGetPackage 1.10.340 Microsoft.WinGet.Client
Cmdlet Remove-WinGetSource 1.10.340 Microsoft.WinGet.Client
Cmdlet Repair-WinGetPackage 1.10.340 Microsoft.WinGet.Client
Cmdlet Repair-WinGetPackageManager 1.10.340 Microsoft.WinGet.Client
Cmdlet Reset-WinGetSource 1.10.340 Microsoft.WinGet.Client
Cmdlet Set-WinGetUserSetting 1.10.340 Microsoft.WinGet.Client
Cmdlet Test-WinGetUserSetting 1.10.340 Microsoft.WinGet.Client
Cmdlet Uninstall-WinGetPackage 1.10.340 Microsoft.WinGet.Client
Cmdlet Update-WinGetPackage 1.10.340 Microsoft.WinGet.Client
Aber vielleicht auch wieder vergessen. Funktioniert wohl immer noch nicht so ganz, jedenfalls bei mir in Windows 10. Update-WinGetPackage meckert rum, das dem das zu viel ist. Muss man wohl immer noch den Umweg gehen. Dann lieber bei der CLI-Version bleiben.
Re: Winget Powershell [Suche Hilfe]
Verfasst: 21.11.2025, 12:05
von mpt
also mit dem winget all Befehl erscheint bei mir auf verschiedenen Geräten bei der Aktualisierung von Greenhot die Fehlermeldung:
Installation fehlgeschlagen mit Exitcode: 1
Wie kann ich das verhindern?
Re: Winget Powershell [Suche Hilfe]
Verfasst: 21.11.2025, 12:52
von DK2000
Greenshot vor dem Update schließen. Das kann weder winget noch das Setup von winget von sich aus. Solange das Greenshot im Hintergrund läuft, beendet sich das Setup mit Exitcode 1.
Das Setup erwartet hier aktive Interaktion mit dem Nutzer. Müsste man also Greenshot mit dem Schalter --interactive aktualisieren. Dann erscheint der Hinweis, dass man Greenshot schließen muss.
Das ist auch so ein kleiner Stolperstein mit winget. Man gewöhnt sich daran (oder auch nicht).
Re: Winget Powershell [Suche Hilfe]
Verfasst: 21.11.2025, 15:09
von mpt
am einfachsten wäre wenn ich UniGetUI verwende aber die Benutzeroberfläche gefällt mir nicht und es gibt keine Optionen diese Elemente zu verändern (Grösse der Schrift/Symbole, Themes, Menüaufbau)