- 获取包“Google Chrome”| % { & ($_.Meta.Attributes["UninstallString"] - 替换 '"')/S
此命令卸载除 Google chrome 之外的其他软件,提供程序是程序。我已经尝试了很多东西,但这不起作用。 请帮忙
最佳答案
您说您的 Google Chrome 安装是通过 Programs
软件包管理提供程序执行的,而不是通过 msi
提供程序(对于后者,请参阅底部部分)。
假设 $_.Meta.Attributes["UninstallString"]
有一个值,它包含一个包含 no-shell/for-cmd.exe
的字符串命令行,当使用 Invoke-Expression
直接从 PowerShell 执行时,通常无法工作,因为 PowerShell 比 cmd.exe
有更多需要引用的元字符,特别是 {
和 }
,如GUID。
- 更根本的是,
&
,call operator 不支持执行整个命令行,它只需要命令或可执行文件的名称或路径,可以选择后跟参数。
在最简单的情况下,您可以执行以下操作:
Get-Package 'Google Chrome' | % {
cmd /c ($_.Meta.Attributes['UninstallString'] + ' /S')
}
有关详细信息,请参阅 this answer .
如果您的 Google Chrome 是通过 msi
软件包提供程序安装的(使用以下方式验证:(Get-Package 'Google Chrome' ).ProviderName
):
并非所有已安装的程序都具有 UninstallString
属性(具有 QuietUninstallString
属性的程序更少),并且由 msi
-provider-installed Google 提供Chrome 没有。
但是,您应该能够通过管道传输到 Uninstall-Package
对于静默(无人值守)卸载:
Get-Package 'Google Chrome' | Uninstall-Package
关于powershell - 未经手动接受,无法使用注册表项远程卸载 Google Chrome,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68513465/