Software installieren auf Windows — früher hieß das: Setup.exe suchen, Next-Next-Finish klicken, hoffen dass keine Toolbar mitkommt. Mit winget hat Microsoft endlich einen echten Paketmanager für Windows gebracht. Und wer Intune nutzt, wird ihn lieben.
Was ist Winget?
winget (Windows Package Manager) ist Microsofts offizielles CLI-Tool zum Installieren, Updaten und Verwalten von Software unter Windows — quasi apt für Windows. Es kommt ab Windows 10 1709 vorinstalliert mit und greift auf ein riesiges Repository im Microsoft Store zurück.
Das Beste: Es funktioniert sowohl lokal auf dem Admin-Rechner als auch remote via Intune-Skripte.
Grundbefehle
Software suchen
winget search firefox
Sucht im Repository nach dem Begriff. Zeigt Package-ID, Version und Quelle.
Software installieren
winget install Mozilla.Firefox
Installiert Firefox ‚Äî ohne Klicks, ohne Wizard. Auch mit –silent f√ºr komplett unbeaufsichtigte Installation:
winget install Mozilla.Firefox --silent --accept-package-agreements --accept-source-agreements
Software updaten
winget upgrade --all
Updatet alle installierte Software auf die neueste Version. Oder gezielt:
winget upgrade Mozilla.Firefox
Software deinstallieren
winget uninstall Mozilla.Firefox
Installierte Software auflisten
winget list
Zeigt alle per winget verwaltbare Software mit aktueller und verfügbarer Version.
Export und Import
Gerne übersehen, aber extrem praktisch für Rechner-Setup:
# Aktuelle Software als JSON exportieren
winget export -o C:\Temp\my-packages.json
# Auf einem neuen Rechner alles reinstallieren
winget import -i C:\Temp\my-packages.json --accept-package-agreements
Winget in der Praxis: Use Cases
1. Neuer Rechner-Setup in 5 Minuten
Statt jede App einzeln herunterzuladen und durch den Wizard zu klicken:
winget install --id Microsoft.VisualStudioCode --silent
winget install --id Google.Chrome --silent
winget install --id Mozilla.Firefox --silent
winget install --id 7zip.7zip --silent
winget install --id Notepad++.Notepad++ --silent
winget install --id Microsoft.AzureCLI --silent
winget install --id Microsoft.PowerShell --silent
Oder noch eleganter mit einem Import-File.
2. Intune: Software-Deployment via PowerShell-Skript
Winget l√§sst sich perfekt in Intune-Remoteskripte einbinden:
# Intune PowerShell-Skript
$ErrorActionPreference = "Stop"
# Winget updaten
winget upgrade --id Microsoft.AppInstaller --silent --accept-package-agreements --accept-source-agreements
# Software installieren
$apps = @(
"Mozilla.Firefox",
"Google.Chrome",
"7zip.7zip",
"Adobe.Acrobat.Reader.64-bit"
)
foreach ($app in $apps) {
winget install --id $app --silent --accept-package-agreements --accept-source-agreements
}
3. Regelmäßige Updates per Scheduled Task
# Scheduled Task erstellen
$action = New-ScheduledTaskAction -Execute "winget.exe" -Argument "upgrade --all --silent --accept-package-agreements --accept-source-agreements"
$trigger = New-ScheduledTaskTrigger -Weekly -DaysOfWeek Wednesday -At 03:00
Register-ScheduledTask -TaskName "Winget Auto-Update" -Action $action -Trigger $trigger -RunLevel Highest
Winget vs. andere Paketmanager
| Feature | winget | Chocolatey | Ninite |
| Vorinstalliert | Ja (ab Win10 1709) | Nein | Nein |
| Repository | Microsoft Store | Community + eigene | Nur ca. 100 Apps |
| Business-Repository | Ja (MS Store for Business) | Ja (Pro-Lizenz) | Nein |
| Intune-Integration | Native PowerShell | Community-Skripte | Keine |
| Kosten | Kostenlos | Freemium | Freemium |
| App-Anzahl | ueber 2.500 | ueber 4.000 | ca. 100 |
Haeufige Probleme und Loesungen
App ist nicht im Repository
Nicht jede Software ist gelistet. Pruefen mit winget search. Alternative: –manifest fuer eigene YAML-Dateien oder Chocolatey als Fallback.
UAC-Prompts blockieren Silent Install
Fuer Intune-Deployment: Skripte im System-Kontext ausfuehren (nicht User-Kontext). Dann kein UAC-Popup. Auch: –accept-package-agreements und –accept-source-agreements nicht vergessen.
Winget-Pfad in PowerShell nicht gefunden
# Loesung: Pfad explizit setzen
$env:Path = [System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User")
# Oder winget direkt aufrufen
and "$env:LOCALAPPDATA\Microsoft\WindowsApps\winget.exe" install Mozilla.Firefox
Version-Pinning
Manchmal will man ein Update zurueckhalten:
# Bestimmte Version installieren
winget install --id Mozilla.Firefox --version 120.0.1
# Version pinnen (ab winget v1.6+)
winget pin add --id Mozilla.Firefox
Winget fuer Intune-Admins: Best Practices
| Empfehlung | Warum? |
| Immer –accept-package-agreements nutzen | Verhindert interaktive Prompts im Silent-Modus |
| Skripte im System-Kontext laufen lassen | Keine UAC-Prompts, volle Admin-Rechte |
| winget upgrade –id Microsoft.AppInstaller zuerst | Stellt sicher, dass winget selbst aktuell ist |
| App-ID nutzen, nicht den Anzeigenamen | Mozilla.Firefox statt Firefox — eindeutiger, keine Tippfehler |
| Export-JSON als Backup pflegen | Schneller Rebuild bei Neu-Setup |
| –silent statt –interactive | Keine Popups, kein User-Eingriff noetig |
| Logs pruefen bei Fehlern | %LOCALAPPDATA%\Packages\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe\LocalState\DiagOutputDir\ |
PowerShell-Wrapper fuer Intune
Wer winget produktiv in Intune nutzen will, sollte einen robusten Wrapper bauen:
# winget-deploy.ps1 - Intune PowerShell Script
param(
[string[]]$AppIds = @("Mozilla.Firefox", "7zip.7zip", "Notepad++.Notepad++"),
[switch]$UpdateAll
)
# Pfad sicherstellen
$env:Path = [System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User")
if ($UpdateAll) {
winget upgrade --all --silent --accept-package-agreements --accept-source-agreements
exit 0
}
foreach ($AppId in $AppIds) {
Write-Host "Installing $AppId..."
winget install --id $AppId --silent --accept-package-agreements --accept-source-agreements
if ($LASTEXITCODE -ne 0) {
Write-Warning "Failed to install $AppId (Exit: $LASTEXITCODE)"
}
}
Fazit
Winget ist laengst kein Experiment mehr — es ist das Standard-Tool fuer Software-Management auf Windows. Kostenlos, vorinstalliert, riesiges Repository und nativer Intune-Support. Wer noch manuell Setup-Wizards durchklickt, verschwendet Zeit.
Empfehlung: Winget fuer alle Standard-Installationen nutzen, Export-JSON als Rebuild-Template pflegen, und im Intune-Deploy-System-Kontext ausfuehren. Fertig.
Academy
Weiterlernen in der Kaffeeundcode Academy
Wenn du diese Themen systematisch vertiefen willst, schau dir den ersten Academy-Kurs zur PSADT-Softwarepaketierung an. Im Fokus stehen .msi, .exe, Silent Switches, Detection, Logs und ein belastbarer Troubleshooting-Workflow.
Diskussion starten
Fragen, Ergänzungen und eigene Erfahrungen sind hier willkommen.