使用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,执行卸载命令

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

 个人水平有限,有什么不对之处,敬请谅解,谢谢!


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部