Winget upgrade –all is a Windows Package Manager command that scans your PC for outdated applications and upgrades every available package in one go. It supports silent mode, Microsoft Store apps, and automation, making it ideal for keeping developer workstations and Windows servers consistently up to date with minimal manual effort.
If you manage Windows systems or build WordPress sites locally, knowing how to run the winget upgrade all command efficiently can save hours of patching time and reduce security risk.
In this guide, I’ll explain winget upgrade –all with practical examples, safe automation tips, and common troubleshooting steps based on years of real world systems and hosting experience.
What is Winget and Why Use it?
Winget (Windows Package Manager) is Microsoft’s official command line tool to discover, install, upgrade, and remove Windows software.

It works with community repositories and Microsoft Store sources, enabling quick, scriptable software management across desktops, development machines, and even Windows server environments.
Primary use cases include:-
- Fast bulk updates with winget upgrade –all
- Repeatable, scripted setups for dev environments
- Unattended patching on workstations or lab servers
- Lowering risk by keeping apps at the latest secure versions
How the Winget Upgrade All Command Works
The command checks installed apps against known repositories (e.g., winget community repo, Microsoft Store) and attempts to upgrade each one to the newest version. Some installers require elevation or user input, which you can avoid with the right switches (silent mode and agreement flags).
Basic Syntax and Important Switches
winget upgrade --all [options]
Common switches you’ll actually use:-
- –silent or –disable-interactivity: Run installers without prompts.
- –accept-package-agreements –accept-source-agreements: Auto-accept license prompts.
- –include-unknown: Include packages without known versions (use when some apps aren’t detected as upgradable).
- –force: Force reinstall/upgrade if needed.
- –scope user|machine: Prefer user or machine installation when supported.
- –source winget or –source msstore: Target a specific source (optional; omit to use all available sources).
You can also target a single app instead of all, using:-
winget upgrade --id <PackageId> [--version <X.Y.Z>] [options]
Prerequisites and Environment
- Windows 10 (1809+) or Windows 11
- App Installer (Microsoft Store) which delivers winget
- Administrator rights for system wide upgrades (recommended)
- Updated sources:
Verify your winget installation:-
winget --info
winget --version
Quick Start: Upgrade Everything in One Command
Basic Example
Run this from an elevated PowerShell or Command Prompt to upgrade every available package:
winget upgrade --all
This displays a list of apps and proceeds with upgrades where supported. If an installer requires interaction, you might be prompted use silent options to avoid that.
Silent, Unattended Upgrades (CI, Dev Boxes, Labs)
For automated environments, suppress prompts and accept agreements:
winget upgrade --all --silent --disable-interactivity ^
--accept-package-agreements --accept-source-agreements
This is ideal for developer PCs or lab servers where downtime is acceptable and you need predictable, hands off updates.
Include Unknown Versions and Force Reinstalls
Some programs don’t report version info cleanly. To try updating them anyway, use:
winget upgrade --all --include-unknown
If you suspect a broken install and want to re-run installers even if versions match:
winget upgrade --all --force
Use –force cautiously test on non production machines first.
Upgrading Only Specific Apps (Selective Approach)
There’s no native “exclude list” flag for –all. Instead, list upgradeable packages, then upgrade selected IDs:
# Show what is upgradeable
winget upgrade
# Upgrade a specific app by Id
winget upgrade --id Git.Git --silent --accept-package-agreements --accept-source-agreements
# Upgrade multiple, one by one
winget upgrade --id VideoLAN.VLC
winget upgrade --id Google.Chrome
winget upgrade --id Notepad++.Notepad++
In PowerShell, you can script filters to skip critical tools during a sprint and only patch developer utilities.
Real World Automation Examples
Weekly Scheduled Task (Silent Updates)
Create a minimal PowerShell script (e.g., C:\Scripts\Winget UpgradeAll.ps1):
$Arguments = @(
'upgrade','--all','--silent','--disable-interactivity',
'--accept-package-agreements','--accept-source-agreements'
)
Start-Process -FilePath 'winget.exe' -ArgumentList $Arguments -Wait -NoNewWindow
Then schedule it via Task Scheduler to run weekly with “Run with highest privileges” enabled. This keeps your apps patched without manual clicks useful on dev workstations and lab servers that host local services or staging sites.
Microsoft Store Apps Considerations
Winget can upgrade Store apps when the msstore source is available and you’re signed into the Microsoft Store. If Store based apps aren’t updating, open Microsoft Store, sign in, and ensure App Installer is current. You can also target Store explicitly:
winget source list
winget upgrade --all --source msstore
Working Behind a Proxy or in Corporate Networks
Ensure system proxy settings are configured. If some downloads fail due to SSL inspection or blocked hosts, request firewall allowlists for winget repositories and vendor CDNs. Running as Administrator often helps with machine wide installs that require elevation.
Troubleshooting Winget Upgrade All
“Winget not recognized” or App Installer missing
Install or update “App Installer” from the Microsoft Store. Then run:
winget --info
winget source update
Package not found or wrong package matched
Specify the exact ID and source:
winget show <name>
winget upgrade --id <Exact.PackageId> --source winget
Installer prompts break automation
Use non-interactive flags and run elevated:
winget upgrade --all --silent --disable-interactivity ^
--accept-package-agreements --accept-source-agreements
Hash or signature validation issues
Occasionally, mismatched hashes or vendor packaging changes cause failures. First, update sources and retry. You may temporarily reinstall a single app with –force if you trust the source. Avoid disabling security checks unless you fully trust the package and repository.
Logging and Diagnostics
Winget writes diagnostic logs to the App Installer local state. Review logs for failing packages and error codes.
winget --info
# Check LocalState\DiagOutputDir under App Installer's package data folder
# Example path (user-specific):
# %LOCALAPPDATA%\Packages\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe\LocalState\DiagOutputDir
Best Practices for Safe, Effective Upgrades
- Test first: Trial upgrades on a non critical machine before rolling out to teams.
- Create a restore point: Especially on critical workstations.
- Pin critical versions: For tools that impact builds (IDEs, SDKs), upgrade selectively.
- Run elevated: Use an Administrator shell for machine scoped apps.
- Keep sources clean: to repair source issues.
- Document exceptions: Maintain a list of apps you never upgrade automatically (e.g., database clients during sprint week).
At YouStable, we apply a similar approach to internal Windows tooling that supports our hosting workflows. We test major app updates in staging, schedule silent upgrades during low traffic windows, and document exceptions for mission critical utilities. The goal: maximum security and stability with minimal disruption.
Practical Examples You Can Copy
See What Will Upgrade Before Running
# Preview upgradeable packages
winget upgrade
# Include unknown versions in the preview
winget upgrade --include-unknown
Run a Full, Quiet Upgrade
winget upgrade --all --silent --disable-interactivity --include-unknown ^
--accept-package-agreements --accept-source-agreements
Upgrade From a Single Source Only
# Use only the community repo
winget upgrade --all --source winget
# Or only Microsoft Store apps
winget upgrade --all --source msstore
FAQ’s
1. What does “winget upgrade –all” do exactly?
It scans installed applications and upgrades every package with an available update from enabled sources (winget community, Microsoft Store, etc.). It attempts each installer in turn and reports successes or failures. Use silent and agreement flags to avoid prompts during the process.
2. Is “winget update” the same as “winget upgrade”?
Yes, winget upgrade is the canonical command. Recent versions of winget accept update as an alias for upgrade. For clarity and scripts, prefer winget upgrade since it’s the primary verb in official documentation and examples.
3. Why do some apps not upgrade with winget –all?
Reasons include: the app isn’t in your enabled sources, requires a manual in app updater, the installer needs user interaction, or version detection is unknown. Try –include unknown and ensure you’re signed into the Microsoft Store for Store apps. You can also target a specific app by its exact ID.
4. Can I schedule “winget upgrade –all” on Windows?
Yes. Place a PowerShell script that calls winget upgrade –all with silent and agreement flags, then use Task Scheduler to run it weekly with highest privileges. This gives you hands off, predictable patching for developer PCs and lab servers.
5. Does winget replace Windows Update or update drivers?
No. Winget manages application packages. Windows Update handles OS patches, drivers, and Microsoft components at the system level. Use both: Windows Update for OS/drivers and winget for applications like browsers, IDEs, runtimes, and utilities.
Conclusion
The winget upgrade all command is one of the fastest ways to keep Windows software up to date, securely and consistently. With silent flags, agreement acceptance, and a scheduled task, you can fully automate application patching.
If you manage WordPress or hosting workflows, this is an easy win for security and productivity. Need help streamlining your developer or content team’s tooling stack?
At YouStable, we build reliable, secure hosting environments and share proven operations practices like winget automation to keep your team focused on shipping, not patching.