Find packages
winget search <text>
Search all sources
winget search --id <text>
Match the package ID only
winget search --cmd <command>
Find the package providing a command
winget search <text> -s msstore
Search only the Microsoft Store
winget show <id>
Details, homepage, installer URL
winget show <id> --versions
List available versions
Install
winget install <query>
Install the single matching package
Several matches print a list; refine the query.
winget install --id <id> -e
Install by exact ID
winget install <id1> <id2> <id3>
Install several packages in one go
winget install <id> -v <version>
Install a specific version
winget install <id> -s winget
Pick the source when IDs clash
winget install <id> --scope user
Install for current user only
Values: user or machine. Not every installer honours it.
winget install <id> -h
Silent install, no installer UI
winget install <id> -i
Show the installer's own wizard
winget install <id> --override
"<args>"
Replace installer arguments
winget install <storeid> -s msstore
Install a Store app by its ID
winget download <id>
Download the installer only
Saved to your Downloads folder unless -d <dir> is given.
Installed and upgrades
winget list
List installed apps
winget list <query>
Filter installed apps
winget list --upgrade-available
Only apps with an update
winget upgrade
Show available upgrades
winget upgrade <id>
Upgrade one package
winget upgrade --all
Upgrade every package
winget upgrade --all --include-unknown
Also apps with unknown version
Some apps report no version; they are skipped without -u.
winget upgrade --all --include-pinned
Also apps with a non-blocking pin
winget upgrade --all -h
Upgrade everything silently
winget upgrade <id> --uninstall-previous
Remove the old version afterwards
winget export -o <file.json>
Write installed apps to JSON
winget export -o <file.json> --include-versions
Record exact versions too
winget import -i <file.json>
Install everything in the file
winget import -i <file.json>
--ignore-unavailable
Skip packages that are not found
winget import -i <file.json> --no-upgrade
Leave installed apps alone
winget configure -f <file.winget>
Apply a configuration file
Review the file first: it can run any DSC resource.
winget configure test -f <file>
Check the system against it
Settings and diagnostics
winget --version
Print the client version
winget --info
Version, paths, group policies
winget settings
Open settings.json in an editor
--verbose-logs
Any command: write a verbose log
--disable-interactivity
Any command: never prompt
--accept-source-agreements
Accept source terms without a prompt
--accept-package-agreements
Accept package licences without a prompt