使用Powershell以静默方式卸载Chrome

使用Powershell以静默方式卸载Chrome,powershell,uninstallation,silent,Powershell,Uninstallation,Silent,我有下面的PowerShell脚本,我正在使用它获取Google Chrome的卸载字符串,然后我想以静默方式卸载它。脚本中的第3行将弹出GUI卸载程序(因此到目前为止似乎一切都是正确的),但是如果我将“/qn”或“/quiet”添加到参数列表中,卸载似乎根本不会运行,即使我让它运行了几个小时 我错过了什么 $AppName = "Google Chrome" $Chrome = Get-ChildItem -Path HKLM:\SOFTWARE\Micro

我有下面的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")

尝试以下操作,而不是尝试使用/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]

循环或选择列表中的第一个,如果它是msi,您可以使用卸载软件包:

get-package *chrome* | uninstall-package -whatif

您的第一个示例抛出了一些错误。使用第二个示例,看起来它在任务管理器中启动了一个“Windows Installer”进程,但仍然或多或少地立即返回到命令提示符,并且似乎没有卸载Chrome。“我很好奇,“/c”有什么作用?”安德鲁更新了我的答案。不要使用卸载字符串,而是使用PSPath获取用于卸载的密钥。遗憾的是,没有改进。和以前一样,它会立即启动Windows installer进程并返回到命令提示符,但似乎什么也不做,即使在等待了一段时间后也是如此。好的,我认为管理员权限与此有关,尽管我的用户名在这台电脑的本地管理员组中。我简化了您的一个建议“cmd.exe/c$Chrome.UninstallString/Passive,并在运行时注意到UAC提示。然后我将/Passive改为/qn,以管理员身份打开Powershell ISE,它可以快速轻松地删除Chrome。再次感谢你的帮助!这当然是一个很好的方法,但我会小心使用*s:)为什么?你不能不解释就陈述这样的事情!;-)@Jawad,以防不止一件事情匹配。好的,我添加了
-whatif