本文目录导读:

Windows PowerShell脚本
通过程序和功能卸载
# 卸载指定软件
$softwareName = "软件名称" # 修改为要卸载的软件名
# 获取已安装程序
$apps = Get-WmiObject -Class Win32_Product | Where-Object {$_.Name -like "*$softwareName*"}
foreach ($app in $apps) {
Write-Host "正在卸载: $($app.Name)"
$app.Uninstall() | Out-Null
}
通过注册表卸载(更可靠)
# 通过注册表查找并卸载
$softwareName = "软件名称"
# 搜索注册表
$paths = @(
"HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*",
"HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*",
"HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*"
)
foreach ($path in $paths) {
Get-ItemProperty $path | Where-Object {$_.DisplayName -like "*$softwareName*"} | ForEach-Object {
$uninstallString = $_.UninstallString
if ($uninstallString) {
Write-Host "卸载: $($_.DisplayName)"
Start-Process cmd.exe -ArgumentList "/c $uninstallString /quiet /norestart" -Wait
}
}
}
Windows批处理脚本
@echo off
setlocal enabledelayedexpansion
set "SOFTWARE_NAME=软件名称"
echo 正在搜索并卸载 %SOFTWARE_NAME%...
:: 方法1:使用wmic
wmic product where "name like '%%%SOFTWARE_NAME%%%'" call uninstall /nointeractive
:: 方法2:卸载指定软件(直接指定GUID)
:: msiexec /x {GUID-CODE} /quiet /norestart
echo 卸载完成!
pause
Linux Shell脚本
针对不同发行版
#!/bin/bash
# 配置要卸载的软件包名称
PACKAGE_NAME="软件包名"
echo "正在卸载 $PACKAGE_NAME..."
# 检测使用的包管理器并卸载
if command -v apt &> /dev/null; then
# Debian/Ubuntu
sudo apt remove -y "$PACKAGE_NAME"
sudo apt autoremove -y
elif command -v yum &> /dev/null; then
# CentOS/RHEL 7
sudo yum remove -y "$PACKAGE_NAME"
elif command -v dnf &> /dev/null; then
# Fedora/RHEL 8+
sudo dnf remove -y "$PACKAGE_NAME"
elif command -v pacman &> /dev/null; then
# Arch Linux
sudo pacman -Rns --noconfirm "$PACKAGE_NAME"
elif command -v zypper &> /dev/null; then
# openSUSE
sudo zypper remove -y "$PACKAGE_NAME"
elif command -v brew &> /dev/null; then
# macOS Homebrew
brew uninstall "$PACKAGE_NAME"
else
echo "未识别的包管理器"
exit 1
fi
echo "卸载完成!"
macOS脚本
#!/bin/bash
# 卸载通过Homebrew安装的软件
function uninstall_brew() {
if brew list "$1" &>/dev/null; then
echo "通过Homebrew卸载 $1..."
brew uninstall "$1"
fi
}
# 卸载通过App Store安装的软件
function uninstall_mas() {
if command -v mas &>/dev/null; then
local app_id=$(mas list | grep "$1" | awk '{print $1}')
if [ ! -z "$app_id" ]; then
echo "通过Mac App Store卸载 $1..."
sudo mas uninstall "$app_id"
fi
fi
}
# 手动卸载应用程序(从Applications目录)
function uninstall_app() {
local app_path="/Applications/$1.app"
if [ -d "$app_path" ]; then
echo "正在卸载 $1..."
sudo rm -rf "$app_path"
# 清理配置文件
rm -rf "$HOME/Library/Preferences/$1*"
rm -rf "$HOME/Library/Application Support/$1*"
rm -rf "$HOME/Library/Caches/$1*"
fi
}
# 使用示例
uninstall_brew "firefox"
# uninstall_mas "Xcode"
# uninstall_app "SomeApp"
高级批量卸载脚本
# batch_uninstall.ps1
param(
[string]$SoftwareListFile = "software_list.txt",
[switch]$Quiet = $true
)
# 读取要卸载的软件列表
$toUninstall = Get-Content $SoftwareListFile
foreach ($software in $toUninstall) {
if ([string]::IsNullOrWhiteSpace($software)) { continue }
Write-Host "正在处理: $software"
# 查找软件
$apps = Get-WmiObject -Class Win32_Product | Where-Object {
$_.Name -like "*$software*"
}
if ($apps.Count -eq 0) {
Write-Host "未找到: $software" -ForegroundColor Yellow
continue
}
foreach ($app in $apps) {
try {
if ($Quiet) {
$app.Uninstall() | Out-Null
} else {
$result = $app.Uninstall()
}
Write-Host "成功卸载: $($app.Name)" -ForegroundColor Green
} catch {
Write-Host "卸载失败: $($app.Name) - $_" -ForegroundColor Red
}
}
}
使用注意事项
- 管理员权限:大多数卸载操作需要管理员权限
- 测试环境:先在测试环境验证脚本
- 备份数据:卸载前确认是否需要保留用户数据
- 静默卸载参数:不同软件的静默卸载参数可能不同
- 日志记录:建议添加日志功能追踪卸载过程
需要根据具体软件和操作系统调整脚本,特别是静默卸载的参数。