从 powershell 卸载产品
Posted
技术标签:
【中文标题】从 powershell 卸载产品【英文标题】:Uninstall a product from powershell 【发布时间】:2016-04-17 06:14:09 【问题描述】:如何使用产品的 guid 卸载产品
我试过了
msiexec /x guid
但我无法卸载该产品
我用的时候效果很好
Wmic product where identifyingnumber=guid call uninstall
【问题讨论】:
你放了产品指南吗?还是您按字面意思输入“guid”? GUID 必须放在大括号中 (msiexec /x "########-####-####-####-############"
)。如果这没有帮助,您需要提供更多信息。你有错误吗?如果是这样,它说明了什么?您是否在启用日志记录的情况下运行命令 (/l*v logfile
)?
我也使用了带括号的确切 guid
您能回答其余的 Ansgar Wiechers 问题吗?
我刚得到一个弹出窗口,通常在错误地给出 msiexec 的参数时出现。我没有收到任何错误,除了
【参考方案1】:
$WMI = Get-WmiObject win32_product -Filter 'IdentifyingNumber = "guid"'
$WMI.Uninstall()
【讨论】:
【参考方案2】:你需要引用参数。请注意,PowerShell 使用大括号作为其语法的一部分(用于定义脚本块),因此将它们传递给本机命令会......意想不到的事情(从本机命令的角度来看):
PS Home:\> args foo
argv[0] = H:\Batches\args.cmd
argv[1] = -encodedCommand
argv[2] = ZgBvAG8A
argv[3] = -inputFormat
argv[4] = xml
argv[5] = -outputFormat
argv[6] = text
PowerShell 显然试图以不会中断的方式支持调用powershell statements
。并且在此过程中会导致大量意外输入到并非恰好是 PowerShell 的本机命令。
请注意,引用解决了这个问题:
PS Home:\> args 'foo'
argv[0] = H:\Batches\args.cmd
argv[1] = foo
Avshalom 也提到了通过 WMI 的方式。
【讨论】:
以上是关于从 powershell 卸载产品的主要内容,如果未能解决你的问题,请参考以下文章
powershell 来自https://stackoverflow.com/questions/31051103/how-to-export-a-class-in-powershell-v5-mod
从 Powershell ISE 中的另一个 PS1 脚本调用 PowerShell 脚本 PS1