使用 Powershell 静默卸载 Chrome
Posted
技术标签:
【中文标题】使用 Powershell 静默卸载 Chrome【英文标题】:Uninstall Chrome silently using Powershell 【发布时间】:2020-05-30 09:44:19 【问题描述】:我有以下 PowerShell 脚本,用于获取 Google Chrome 的卸载字符串,然后我想静默卸载它。脚本中的第 3 行将弹出 GUI 卸载程序(因此到目前为止似乎一切都是正确的),但如果我将“/qn”或“/quiet”添加到参数列表中,卸载似乎不会在全部,即使我让它静置几个小时。
我错过了什么?
$AppName = "Google Chrome"
$Chrome = Get-ChildItem -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall, HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall | Get-ItemProperty | Where-Object $_.DisplayName -match $($AppName)
Start-Process -Wait -FilePath MsiExec.exe -Argumentlist "/X",$Chrome.UninstallString.TrimStart("MsiExec.exe /X")
【问题讨论】:
【参考方案1】:如果是 msi 你可以使用uninstall-package:
get-package *chrome* | uninstall-package -whatif
【讨论】:
这当然是一个好方法,但我会小心使用 *s :) 为什么?你不能不解释就说出这样的话! ;-) @Jawad 万一不止一件事匹配。好的,我加了-whatif
。【参考方案2】:
不要尝试使用 /X 并删除 /X 和其他东西,而是尝试以下操作
# Get the key to uninstall
$chromeUninstall = $Chrome.Pspath.Split("\")[-1]
Start-Process -Wait -FilePath MsiExec.exe -Argumentlist "/X $ChromeUninstall /quiet /norestart"
甚至更简单,
Start-Process -Wait cmd.exe -ArgumentList "/c msiexec /X $ChromeUninstall /quiet /norestart"
/c
- 执行字符串指定的命令然后终止
注意
在我的系统上,我得到两个卸载字符串。您可能想考虑使用[0]
循环或选择列表中的第一个
【讨论】:
您的第一个示例引发了一些错误。使用您的第二个示例看起来像是在任务管理器中启动了“Windows Installer”进程,但仍或多或少地立即返回到命令提示符,并且似乎没有卸载 Chrome。我很好奇,“/c”是做什么的? @Andrew 更新了我的答案。不要使用 UninstallString,而是使用 PSPath 获取用于卸载的密钥。 很遗憾,没有改善。和以前一样,它会启动一个 Windows 安装程序进程并立即返回到命令提示符,但似乎什么也没做,即使等待了一段时间。 好的,我认为管理员权限与此有关,即使我的用户名在这台 PC 上的本地管理员组中。我将您的一个建议简化为“cmd.exe /c $Chrome.UninstallString /Passive”,并在运行时注意到 UAC 提示。然后我将 /Passive 更改为 /qn 并以管理员身份打开 Powershell ISE,它快速轻松地删除了 Chrome。再次感谢您的帮助!以上是关于使用 Powershell 静默卸载 Chrome的主要内容,如果未能解决你的问题,请参考以下文章