Updating your Windows 11 apps one at a time is a waste of your afternoon. Winget update can update many of the apps on your PC in a single command, as long as it can identify them and find an available update. Here’s the exact workflow I use on my own Windows 11 25H2 machine to keep everything current in about 30 seconds.
Last updated September 2026 for Windows 11 25H2 and winget 1.28+.
The one winget update command that does it all
On Windows 11, open Windows Terminal (Admin) and run:
winget upgrade --all --silent --accept-package-agreements --accept-source-agreements

If the list includes apps with an Unknown installed version and you want WinGet to attempt those updates too, run:
winget upgrade --all --include-unknown --silent --accept-package-agreements --accept-source-agreements
That single line does five things:
- –all attempts to update every detected app with an available update.
- –include-unknown tells WinGet to also attempt updates for apps whose installed version cannot be identified. That can catch more software, but it is best used after you review the list first because WinGet cannot always tell whether those apps are already current.
- –silent asks WinGet to use the package’s silent installer mode, but that only works when the installer’s manifest provides and supports silent switches. Some third-party installers may still show a window, ask for elevation, or otherwise require attention. Microsoft defines –silent as running the installer in silent mode and suppressing UI, but the actual behavior still depends on the installer.
- –accept-package-agreements pre-accepts EULAs so it doesn’t stop and wait.
- –accept-source-agreements pre-accepts source EULAs the same way.
Kick it off, grab coffee, come back. WinGet will attempt to update every eligible package it detects. Most updates should complete without extra prompts, although some installers can still require attention. If this is your first time using WinGet, start with our full WinGet install guide first — it walks you through getting WinGet set up correctly.
Check what’s about to update first
If you’re the cautious type — and honestly, you should be for the first run — check the update list before firing:
winget upgrade

You’ll get a table of every app with an available update, showing the current version, the target version, and the source (winget or msstore). Nothing changes until you run the actual upgrade command.
winget update just the apps you care about
Sometimes --all is overkill. To upgrade a single app:
winget upgrade --id Microsoft.PowerShell

Use winget list first if you need to find the exact ID. Case doesn’t matter, but the dotted format does — Microsoft.PowerShell works, powershell won’t.
To upgrade a few apps in one shot without doing everything on the system:
winget upgrade Microsoft.PowerShell Microsoft.WindowsTerminal
Skip apps you don’t want to touch
WinGet’s pin feature is the unsung hero of upgrade --all. Pin any app you want to hold back — perfect for Node.js LTS lines, that one Adobe app your workflow depends on, or a specific version of Docker Desktop your team standardized on.
Pin an app to its current version:
winget pin add --id OpenJS.NodeJS.LTS
Or pin to a specific major version:
winget pin add --id OpenJS.NodeJS.LTS --version 20.*
Now winget upgrade --all will skip that app. You can remove the pin later with:
winget pin remove --id OpenJS.NodeJS.LTS
Turn this into a monthly maintenance script

In Task Scheduler, run this task under your normal Windows account, select Run with highest privileges, and test it manually before relying on the monthly schedule.
$LogPath = "$env:USERPROFILE\Documents\winget-update-log.txt"Start-Transcript -Path $LogPath -Appendwinget source updatewinget upgrade --all --silent --disable-interactivity --accept-package-agreements --accept-source-agreementsStop-Transcript
Keep –include-unknown out of the scheduled task unless you have manually reviewed the affected apps and are comfortable with WinGet attempting their updates automatically. The transcript file gives you a clean log of what was updated, when. If something breaks after an update, you’ll know exactly which one to blame.
What if winget upgrade --all skips an app?
The three most common reasons an app gets skipped:
- WinGet cannot determine the installed version. Some apps report versions like
2026.09.1-previewthat WinGet can’t compare reliably.. Fix: runwinget upgradefirst, review the apps marked as Unknown, then use--include-unknownonly if you want WinGet to attempt those updates. - The app is pinned. Run
winget pin listto see packages that are currently excluded from bulk upgrades. - WinGet cannot match the app to a package. WinGet can only update software it recognizes through a configured source. An app installed manually from a
.exemay still be detected, but apps without a package match will not appear in the upgrade list. Runwinget listto see what WinGet can identify. - The update needs administrator rights. Some machine-wide apps require elevation to update. Close the terminal, reopen Windows Terminal (Admin), and try again.
winget list --upgrade-available

winget source update

winget source reset --force
Use the first command to see detected apps with updates. If packages or sources appear missing, try winget source update. Use winget source reset --force only as a last resort because it resets the configured WinGet sources.
Bonus: back up your app list before a Windows reinstall
Before wiping a machine, export the apps WinGet can identify so you can reinstall many of them more quickly on the new PC:
winget export -o C:\apps.json
Add –include-versions only if you want the export file to include the currently installed version numbers:
winget export -o C:\apps.json --include-versions
The export command creates a JSON file of identifiable applications. The optional --include-versions setting records installed versions; it does not make the export a full backup.
winget import -i C:\apps.json --accept-package-agreements --accept-source-agreements
That command can reinstall many of the apps WinGet exported, saving time after a clean Windows install. It will not restore app settings, licenses, user data, browser profiles, game saves, or programs WinGet could not identify. It’s a lifesaver for the Windows 11 26H2 clean-install crowd.
Check out ExpressVPN
RECENT POSTS YOU MIGHT LIKE
- How to Use Winget on Windows 11: Install, Update, and Remove Apps Fast
- How to Easily Update PowerShell on Windows 11 (All Methods)
- How to Install Windows 11 26H2 Release Preview
Discover more from Microsoft News Now
Subscribe to get the latest posts sent to your email.