使用ProductCode批量卸载程序

前言:

众所周知,在命令行可以使用msiexec.exe卸载应用程序,但是比较麻烦的是需要获取ProductCode或者找到安装时的MSI程序包,而且同一个产品可能会有很多的版本,而每个版本的ProductCode又会不一样,所以这对同产品的批量卸载很不友好。那么有没有什么方法可以自动获取到ProductCode实现卸载操作呢?当然是有的,而且很多。

下面我介绍一种比较简单直观的方法给大家,希望对各位有所帮助。

交互式powershell卸载软件脚本代码如下

echo "本地计算机上已安装的应用程序:"
get-wmiobject Win32_Product  #列出本地计算机上已安装的进程
$app = Read-Host "请输入需要卸载的应用名称"
$app_List = Get-WmiObject -Class Win32_Product -Filter "Name='$app'"
echo "即将卸载的应用程序信息:"
$app_List
$app_ProductCode = $app_List.IdentifyingNumber    #提取应用程序ProductCode值
#静默卸载:msiexec.exe /x $app_ProductCode /quiet /norestart
msiexec.exe /x $app_ProductCode /passive /norestart
pause

可以批量卸载的powershell脚本代码如下(无需用户干预):

注意:如果应用程序有自我保护的,需要取消自我保护例如密码等才能卸载的应用程序

$app = 直接填写需要卸载的应用程序名称
$app_List = Get-WmiObject -Class Win32_Product -Filter "Name='$app'"
echo "即将卸载的应用程序信息:"
$app_List
$app_ProductCode = $app_List.IdentifyingNumber    #提取应用程序ProductCode值
msiexec.exe /x $app_ProductCode /quiet /norestart    #静默卸载

给大家分享一下这个卸载的构建思路:

我们的核心是需要提取ProductCode赋值给msiexec.exe使用,所以我们首先应该提取ProductCode。

1、需要使用get-wmiobject Win32_Product获取已安装的应用程序列表,以sep卸载为例

2、使用-Filter 参数从已安装列表中过滤出需要卸载的sep应用程序信息,从图中可以看到sep的信息已经被过滤出来。该值将存储在变量$app_List中 。

 输出的信息中有IdentifyingNumber、Name、Vendor、Version 字段,其中IdentifyingNumber字段的值是我们需要的,也就是ProductCode

4、提取ProductCode,在变量$app_List中提取IdentifyingNumber类型

 5、赋值ProductCode给msiexec.exe,执行卸载命令

注意:如果应用程序有自我保护的,例如卸载密码保护,则需要填入密码才能卸载应用程序,或者在后台统一取消卸载密码保护

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三颗蛋OOO

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值