这是一个非常简单的脚本,它只是卸载应用程序。这是我的代码:

$app = Get-WmiObject -Class Win32_Product -Filter "Name = 'Alliance Suite G5'"

Write-Host $app

$app.Uninstall()

我将写入主机放入只是为了确保它正在抓取正确的应用程序。这是我的输出。



返回值为 0,但它从未真正卸载应用程序。任何帮助,将不胜感激!我在晚上运行了一些自动化测试,其中一个安装了应用程序,所以如果我可以制作一个预定的 powershell 脚本来卸载它,那就太好了。

事件查看器(注意:产品“在第二条消息之前重新配置了几次):
Windows Installer reconfigured the product. Product Name: Microsoft Identity Extensions. Product Version: 2.0.1459.0. Product Language: 1033. Manufacturer: Microsoft Corporation. Reconfiguration success or error status: 0.

Beginning a Windows Installer transaction: {99B66721-7E75-487C-A0C8-A4F8C4325661}. Client Process Id: 8664.

Product: Alliance Suite G5 -- Removal completed successfully.

Windows Installer removed the product. Product Name: Alliance Suite G5. Product Version: 2013.2.14226.1. Product Language: 1033. Manufacturer: United Systems & Software. Removal success or error status: 0.

运行命令时的结果:
C:\Windows\system32>msiexec.exe /X "C:\AllianceInstall\G5\Alliance.G5.exe" /QN /
L*V "C:\msilog.log



[09:42:06:039]:重置缓存的策略值 MSI (c) (5C:74)

[09:42:06:039]:机器策略值“调试”为 0 MSI
(C)
(5C:74) [09:42:06:039]: * RunEngine:
* 产品:C:\AllianceInstall\G5\Alliance.G5.exe
* 操作:
* 命令行: ****** MSI (c) (5C:74)

[09:42:06:039]:客户端和 >UI 是无或基本的:运行整个



[09:42:06:039]:抓取执行互斥锁。 MSI (c) (5C:74)

[09:42:06:061]:启用伪装。 MSI(c) (5C:74)

[09:42:06:061]:尝试启用所有禁用的权限之前
在服务器 MSI 上调用安装 (c) (5C:74)

[09:42:06:064]:递增计数器以禁用关机。柜台



[09:42:06:071]:重置缓存的策略值 MSI (s) (F8:64)
[09:42:06:071]:机器策略值“调试”为 0 MSI (s) (F8:64)
[09:42:06:071]: * 运行引擎:



[09:42:06:072]:注:1:2203 2:
C:\AllianceInstall\G5\Alliance.G5.exe



[09:42:06:073]: MainEngineThread 是



[09:42:06:074]:用户策略值



[09:42:06:074]:机器策略



[09:42:06:074]:



[09:42:06:074]:注:1:1402 2:



[09:42:06:074]:注:1:1402 2:



[09:42:06:075]:递减计数器以禁用



[09:42:06:076]:递减计数器



[09:42:06:076]:MainEngineThread

最佳答案

看起来这是一个 Installshield 套件项目 - 本质上是通过一些自定义 Installshield 构造将 MSI 文件视为单个产品的集合。它似乎是一个 setup.exe 类型的启动器 ,它也被注册来处理 ARP 修复/修改

在聊天中 JLott 确认此命令有效:

Alliance.G5.exe /remove /s

JLott 使用的完整命令:
C:\Windows\system32>Start C:\AllianceInstall\G5\Alliance.G5.exe /remove /s

除上述之外,您应该能够通过找到其 GUID 并通过 msiexec.exe 卸载来卸载每个单独的 MSI。

这个简单的 powershell 命令 将提供带有“识别代码”的已安装产品列表。您可以像这样将此代码传递给 Windows 安装程序:msiexec.exe /x {GUID-HERE}
get-wmiobject -class Win32_Product

或者您可以选择以 列表形式 来查看它:

get-wmiobject Win32_Product | Format-Table IdentifyingNumber, Name, Version

关于powershell - 卸载脚本未正确执行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25364258/

10-13 07:20