在Windows操作系统中,卸载程序通常可以通过图形界面的“设置”或“控制面板”完成,但对于需要批量操作、远程管理或自动化脚本场景的用户,命令行工具提供了更高效的解决方案,Windows卸载程序命令主要分为两类:基于PowerShell的cmdlet命令和传统的命令行工具(如wmic和命令提示符),本文将详细介绍这些命令的使用方法、适用场景及注意事项,帮助用户根据需求选择合适的卸载方式。

PowerShell命令卸载程序
PowerShell是Windows系统管理的核心工具,其Get-Package和Uninstall-Package cmdlet可轻松管理已安装的程序,需通过管理员权限启动PowerShell(右键点击“开始”菜单,选择“Windows PowerShell(管理员)”或“Terminal(管理员)”)。
查看已安装程序
使用Get-Package命令可列出所有通过Windows Installer安装的程序:
Get-Package | Format-Table Name, Version, ProviderName -AutoSize
若需筛选特定程序,可通过管道符结合Where-Object:
Get-Package | Where-Object {$_.Name -like "*Adobe*"} | Format-Table Name, Version
卸载程序
通过程序名称卸载时,需确保名称精确匹配,例如卸载“7-Zip”程序:

Uninstall-Package -Name "7-Zip" -Force
若程序名称包含空格或特殊字符,需用引号包裹,对于通过其他包管理器(如Chocolatey、winget)安装的程序,需先安装对应的包管理器模块,再使用其专用cmdlet卸载。
使用winget命令(Windows 10/11推荐)
Windows Package Manager(winget)是微软推出的命令行工具,支持通过ID、名称或源卸载程序,首先查看已安装程序列表:
winget list
通过程序ID卸载(如卸载Google Chrome,ID为Google.Chrome):
winget uninstall Google.Chrome
若需强制卸载(跳过确认提示),添加--accept-package-agreements和--accept-source-agreements参数:

winget uninstall --id Microsoft.VisualStudioCode --accept-package-agreements --accept-source-agreements
传统命令行工具卸载
使用WMIC命令
Windows Management Instrumentation Command-line (WMIC)工具可通过Windows Management Instrumentation (WMI)接口管理程序,首先查看所有已安装程序:
wmic product get name, version
卸载程序时,需使用程序的IdentifyingNumber(GUID)或名称,例如卸载“Notepad++”:
wmic product where name="Notepad++" call uninstall
注意:WMIC命令对程序名称的匹配要求严格,且部分现代程序可能无法通过此方式卸载。
使用MSIEXEC命令
对于通过Windows Installer (.msi)安装的程序,可使用msiexec.exe命令卸载,需先通过以下命令获取程序的产品代码:
wmic product get name, identifyingnumber
然后使用产品代码卸载:
msiexec /x {产品代码} /quiet /norestart
参数说明:/x表示卸载,/quiet静默模式,/norestart禁止自动重启,若程序已提供卸载入口(如通过控制面板显示的“卸载”命令),可直接调用其卸载字符串:
msiexec /uninstall "C:\Program Files\Example\uninstall.msi" /quiet
批量卸载与脚本自动化
批量卸载程序
通过PowerShell脚本可批量卸载多个程序,例如创建一个包含程序名称的数组,循环执行卸载:
$programsToUninstall = "Adobe Reader", "Skype", "Spotify"
foreach ($program in $programsToUninstall) {
Uninstall-Package -Name $program -Force -ErrorAction SilentlyContinue
}
结合CSV文件卸载
若需从CSV文件读取程序列表,可使用Import-Csv命令:
$programsList = Import-Csv -Path "C:\path\to\programs.csv" -Header "Name"
foreach ($row in $programsList) {
Uninstall-Package -Name $row.Name -Force
}
CSV文件格式示例:
| Name |
|---------------|
| Google Chrome |
| Mozilla Firefox|
注意事项与最佳实践
- 权限管理:所有卸载命令均需管理员权限执行,否则会提示“拒绝访问”。
- 程序匹配:命令行卸载对程序名称的匹配要求较高,建议先通过
Get-Package或winget list确认准确名称。 - 依赖关系:卸载前需检查程序是否为其他软件的依赖项,避免系统功能异常。
- 日志记录:通过
msiexec卸载时,可添加/L*v C:\log.txt参数生成详细日志,便于排查问题。 - 第三方工具:对于顽固程序,可结合Revo Uninstaller等第三方工具的命令行功能(如
RevoUninstallersilent.exe /program="Program Name")。
相关问答FAQs
Q1:为什么使用PowerShell卸载程序时提示“找不到程序”?
A1:通常是由于程序名称与Get-Package返回的名称不完全匹配所致,建议先通过Get-Package | Format-Table Name -AutoSize查看精确名称,或尝试使用winget list搜索程序,部分程序(如便携式应用)可能未通过Windows Installer安装,无法通过Uninstall-Package卸载。
Q2:如何静默卸载程序且不显示任何提示?
A2:不同工具的静默参数不同,对于winget,需添加--silent和--accept-package-agreements参数;对于msiexec,使用/quiet或/passive(显示进度条但不需用户交互);PowerShell的Uninstall-Package默认静默,但可通过-Verbose参数查看详细日志,若需完全隐藏输出,可将命令重定向到$null:Uninstall-Package -Name "Program" -Force | Out-Null。
