powershell - 未经手动接受,无法使用注册表项远程卸载 Google Chrome

标签 powershell uninstallation unattended-processing uninstallstring

  1. 获取包“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/

相关文章:

powershell - 如何在Where-Object中使用函数

batch-file - 在批处理文件中调用 powershell 脚本时如何使用嵌套引号?

c# - 如何访问从 Powershell 的 .NET 事件返回的对象参数

installation - 如何使用 Innosetup 创建安装程序,该安装程序不应使用“添加/删除程序”注册应用程序?

powershell - 如何使用 powershell 安装 Azure cmdlet

visual-studio - VisualStudio - 如何无人值守安装第 3 方 DLL 控件?

azure - 如何通过 Azure 中的 PowerShell 获取订阅子资源的 PIM 角色分配?

android - 关于卸载 Android 应用程序的警报

c# - 运行 Windows 卸载程序时关闭应用程序

windows - 导出区域设置供以后导入