Levels Winget-Aktionen werden als SYSTEM-Benutzer ausgeführt und erzwingen den Maschinenbereich für alle Vorgänge. Die meisten Installations- und Aktualisierungsfehler lassen sich auf eine dieser beiden Einschränkungen zurückführen. Das Verständnis dieser Einschränkungen im Voraus löst die Mehrheit der gemeldeten Probleme.
Wie Level Winget ausführt
Zwei Dinge sind immer wahr für jede Level Winget-Aktion:
Wird als
SYSTEMausgeführt: Level führt Winget unter demSYSTEM-Konto aus, nicht als angemeldeter Benutzer oder Standard-Admin-Sitzung. Jedes Paketverhalten, das vom Benutzerkontext abhängt, funktioniert nicht auf die gleiche Weise.Erzwingt den Maschinenbereich: Level fügt
--scope machinezu allen Winget-Vorgängen hinzu. Nur Pakete mit einem in ihrem Manifest definierten Maschinenbereich können über Level installiert oder aktualisiert werden.
Diese beiden Einschränkungen erklären fast jeden Bericht "es funktioniert in PowerShell aber nicht in Level".
Häufige Probleme
Paket installiert sich über PowerShell, aber nicht über Level
Wenn Sie ein Paket als aktuell angemeldeter Benutzer installieren können, aber die Level-Aktion fehlschlägt, liegt der Unterschied im Benutzerkontext. Level wird als SYSTEM ausgeführt, das eine andere Umgebung und Registrierung als ein angemeldeter Benutzer hat. Meistens äußert sich dies als Berechtigungsproblem oder fehlender Benutzerprofil-Pfad.
Es gibt keine Problemumgehung für Pakete, die grundsätzlich eine Benutzersitzung erfordern. Für diese sollten Sie einen skriptgestützten Ansatz mit PsExec oder einer geplanten Aufgabe in einem bestimmten Benutzerkontext in Betracht ziehen.
Paket installiert sich als Admin, aber nicht über Level
Level erzwingt den Maschinenbereich. Ein Paket kann sich als Admin ohne --scope machine problemlos installieren, schlägt aber fehl, wenn der Maschinenbereich erforderlich ist.
Testen Sie es direkt zur Bestätigung:
winget install --scope machine -e --id PACKAGE_ID
Wenn dies in einer Admin-PowerShell-Sitzung fehlschlägt, stellt das Paket keinen Maschinenbereich-Installer bereit. Level kann es nicht über die Winget-Aktion installieren. Die einzigen Optionen bestehen darin, eine alternative Paket-ID zu finden, die den Maschinenbereich unterstützt, oder sie über eine Aktion "Skript ausführen" mit einem anderen Installer zu installieren.
Upgrade-Aktion zeigt weniger Pakete als erwartet
Level fügt --scope machine zu Upgrade-Scans hinzu, daher werden nur Installations mit Maschinenbereich in der Upgrade-Liste angezeigt.
Sie können dies überprüfen, indem Sie den äquivalenten Befehl selbst ausführen:
winget upgrade --scope machine --all
Wenn die Ergebnisse dem entsprechen, was Level anzeigt, ist Level genau. Pakete, die unter einem Benutzerbereich installiert wurden, werden nicht angezeigt.
Paketinstallation überschreitet das Zeitlimit in Level, funktioniert aber über Admin-PowerShell
Das ist selten. Dies tritt auf, wenn das Installationsprogramm des Pakets den Silent/Quiet-Modus nicht korrekt verarbeitet und auf Benutzerinteraktion wartet, die niemals eintreffen kann, da Level als SYSTEM ohne UI ausgeführt wird. Es gibt keine Problemumgehung dafür — das Problem liegt beim Installationsprogramm selbst. Überprüfen Sie die offenen Probleme des Pakets im Winget-Pkgs-Repository.
Paket aus Auto-Updates ausschließen
Die Aktion Winget-Paket aktualisieren hat ein integriertes Feld Ausgeschlossene Pakete. Geben Sie dort eine oder mehrere Paket-IDs ein und diese Pakete werden während der Upgrade-Ausführung übersprungen — keine Pinning- oder Befehlszeilenhilfe erforderlich.
Überprüfen, ob ein Paket den Maschinenbereich unterstützt
Die definitive Überprüfung ist das Paket-Manifest im Winget-Pkgs-Repository. Suchen Sie nach InstallerScope: machine im Manifest. Wenn dies fehlt oder auf user gesetzt ist, kann Levels Winget-Aktion es nicht installieren.
Der praktische Shortcut: Führen Sie den obigen winget install --scope machine-Befehl in einer Admin-PowerShell-Sitzung aus. Wenn es dort funktioniert, funktioniert es auch in Level.
FAQ
Verwendet Level das Standard-Winget von Microsoft oder seine eigene Version? Level installiert und verwaltet seine eigene Winget-Implementierung. Die Aktion Winget installieren (oder eine andere Winget-Aktion, die es automatisch installiert) richtet Levels verwaltete Version ein. Dies gewährleistet konsistentes Verhalten auf all Ihren Geräten, unabhängig davon, welche Winget-Version (falls vorhanden) bereits vorhanden war.
Ich kann eine Paket-ID nicht finden. Wo soll ich nachschauen? Durchsuchen Sie das Winget-Pkgs-Repository oder führen Sie
winget search <name>in einer PowerShell-Sitzung auf einem Gerät aus, auf dem Levels Winget installiert ist. Die ID, die Sie finden, ist das, was Sie in die Level-Aktion einfügen.Kann ich Winget-Befehle direkt vom Level-Terminal ausführen? Ja. Das Hintergrund-Terminal von Level wird als
SYSTEMausgeführt, daher gelten die Einschränkungen für Maschinenbereich und SYSTEM-Kontext auch dort. Testen Sie Befehle zuerst im Terminal, bevor Sie sie in eine Automatisierung integrieren.Ein Paket wurde kürzlich zu Winget-Pkgs hinzugefügt, aber Level zeigt es nicht als verfügbar an. Levels Winget-Implementierung kann leicht hinter dem Community-Repository zurückbleiben. Wenn ein sehr neues Paket nicht angezeigt wird, überprüfen Sie, ob der
--scope machine-Bereich im Manifest noch nicht definiert ist.

