- 获取包“谷歌浏览器”| % { & ($_.Meta.Attributes["UninstallString"] -replace '"') /S
此命令卸载除 Google chrome 以外的其他软件,提供程序是程序。我尝试了很多东西,但这不起作用。请帮忙
此命令卸载除 Google chrome 以外的其他软件,提供程序是程序。我尝试了很多东西,但这不起作用。请帮忙
您说您的Google Chrome 安装是通过Programs
包管理提供程序执行的,而不是通过msi
提供程序执行的(对于后者,请参阅底部部分)。
假设它$_.Meta.Attributes["UninstallString"]
有一个值,它包含一个包含 no-shell / for-cmd.exe
命令行的字符串,当直接从 PowerShell 执行时,这通常不起作用Invoke-Expression
,因为 PowerShell 的元字符比cmd.exe
需要引用的要多,特别是{
和}
,如在GUID。
&
的是,调用运算符不支持执行整个命令行,它只需要命令或可执行文件的名称或路径,可选地后跟参数。在最简单的情况下(可能是异步执行,如果卸载可执行文件是GUI应用程序,例如msiexec
),您可以执行以下操作:
Get-Package 'Google Chrome' | % {
cmd /c ($_.Meta.Attributes['UninstallString'] + ' /S')
}
有关更多信息,包括确保同步执行msiexec
基于卸载的方法,请参阅此答案。
如果您的 Google Chrome 是通过msi
包提供程序安装的(使用:验证(Get-Package 'Google Chrome').ProviderName
):
并非所有已安装的程序都有UninstallString
属性(甚至更少有属性QuietUninstallString
),并且msi
-provider-installed Google Chrome 没有属性。
但是,您应该能够通过管道Uninstall-Package
进行静默(无人值守)卸载:
Get-Package 'Google Chrome' | Uninstall-Package