Einführung
Die Winget-Aktionen von Level werden als SYSTEM ausgeführt und erzwingen den Geräteumfang bei allen Operationen. Die meisten Installations- und Upgrade-Fehler lassen sich auf eine dieser beiden Einschränkungen zurückführen. Das Verständnis von ihnen im Voraus löst die meisten gemeldeten Probleme.
Wie Level Winget ausführt
Zwei Dinge sind immer wahr für jede Level-Winget-Aktion:
Wird ausgeführt als
SYSTEM: Level führt winget unter dem KontoSYSTEMaus, nicht als angemeldeter Benutzer oder Standard-Admin-Sitzung. Jedes Paketverhalten, das vom Benutzerkontext abhängt, funktioniert nicht auf die gleiche Weise.Erzwingt Geräteumfang: Level fügt
--scope machinezu allen Winget-Operationen hinzu. Nur Pakete mit einem in ihrem Manifest definierten Geräteumfang 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 wird über PowerShell installiert, aber nicht über Level
Wenn Sie ein Paket als aktuell angemeldeter Benutzer installieren können, aber die Level-Aktion fehlschlägt, ist der Unterschied der Benutzerkontext. Level wird als SYSTEM ausgeführt, was eine andere Umgebung und Registrierung hat als ein angemeldeter Benutzer. Die meiste Zeit zeigt sich dies als Berechtigungsproblem oder fehlender Benutzerpfad.
Es gibt keine Problemumgehung für Pakete, die grundsätzlich eine Benutzersitzung erfordern. Erwägen Sie für diese einen skriptgestützten Ansatz mit PsExec oder eine geplante Aufgabe, die unter einem bestimmten Benutzerkontext ausgeführt wird.
Paket wird als Admin installiert, aber nicht über Level
Level erzwingt den Geräteumfang. Ein Paket kann als Admin ohne --scope machine fehlerfrei installiert werden, schlägt aber fehl, wenn der Geräteumfang erforderlich ist.
Testen Sie es direkt, um zu bestätigen:
winget install --scope machine -e --id PACKAGE_ID
Wenn dies in einer Admin-PowerShell-Sitzung fehlschlägt, bietet das Paket keinen Geräteumfang-Installer. Level kann es über die Winget-Aktion nicht installieren. Die einzigen Optionen sind, eine alternative Paket-ID zu finden, die den Geräteumfang unterstützt, oder sie über eine Run-Script-Aktion mit einem anderen Installer zu installieren.
Die Upgrade-Aktion zeigt weniger Pakete als erwartet
Level fügt --scope machine zu Upgrade-Scans hinzu, daher werden nur Installationen mit Geräteumfang in der Upgrade-Liste angezeigt.
Sie können dies überprüfen, indem Sie den entsprechenden Befehl selbst ausführen:
winget upgrade --scope machine --all
Wenn die Ergebnisse mit dem übereinstimmen, was Level zeigt, ist Level korrekt. Pakete, die unter einem Benutzerumfang installiert sind, werden nicht angezeigt.
Die Paketinstallation läuft in Level ab, funktioniert aber über Admin PowerShell
Dies ist selten. Es passiert, wenn der Installer des Pakets den stillen/ruhigen Modus nicht richtig handhabt und auf Benutzerinteraktion wartet, die niemals eintreffen kann, da Level als SYSTEM ohne Benutzeroberfläche ausgeführt wird. Es gibt keine Problemumgehung dafür — das Problem liegt beim Installer selbst. Überprüfen Sie die offenen Probleme des Pakets im Winget-Pkgs-Repository.
Ausschließen eines Pakets von automatischen Updates
Die Winget-Paket aktualisieren -Aktion hat ein integriertes Feld Ausgeschlossene Paket(e) . Geben Sie dort eine oder mehrere Paket-IDs ein und diese Pakete werden während der Upgrade-Ausführung übersprungen — keine Anheftung oder Befehlszeilen-Workarounds erforderlich.
Überprüfen, ob ein Paket den Geräteumfang unterstützt
Die definitive Überprüfung ist das Paketmanifest im Winget-Pkgs-Repository . Suchen Sie nach InstallerScope: machine im Manifest. Wenn es nicht vorhanden ist oder auf user gesetzt ist, kann die Winget-Aktion von Level es nicht installieren.
Die praktische Abkürzung: Führen Sie den winget install --scope machine Befehl oben in einer Admin-PowerShell-Sitzung aus. Wenn es dort erfolgreich ist, funktioniert es in Level.
FAQ
Verwendet Level das Standard-Microsoft-Winget oder seine eigene Version? Level installiert und verwaltet seine eigene Implementierung von Winget. Die Winget installieren -Aktion (oder jede andere Winget-Aktion, die es automatisch installiert) richtet die verwaltete Version von Level ein. Dies gewährleistet ein konsistentes Verhalten auf Ihren Geräten, unabhängig davon, welche Winget-Version (falls vorhanden) bereits vorhanden war.
Ich finde keine Paket-ID. Wo schaue ich hin? Suchen 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, wird in der Level-Aktion verwendet.Kann ich Winget-Befehle direkt vom Terminal von Level aus ausführen? Ja. Das Hintergrund-Terminal von Level wird als
SYSTEMausgeführt, daher gelten die Einschränkungen für Geräteumfang und SYSTEM-Kontext auch dort. Testen Sie Befehle zuerst im Terminal, bevor Sie sie in einer Automatisierung erstellen.Ein Paket wurde kürzlich zu Winget-Pkgs hinzugefügt, aber Level zeigt es nicht als verfügbar an. Die Winget-Implementierung von Level kann dem Community-Repository leicht hinterherhinken. Wenn ein sehr aktuelles Paket nicht angezeigt wird, überprüfen Sie, ob der
--scope machineim Manifest noch definiert ist.

