如何用PowerShell脚本精简实现Chrome卸载并安装指定版本
如何用PowerShell脚本精简实现Chrome卸载并安装指定版本
嘿,我懂你想把脚本写得短小精悍的需求——之前用Invoke-Expression处理Chrome的卸载字符串踩坑太正常了,带引号的路径和一堆参数很容易让它解析出错。下面给你一套精简又靠谱的实现方案,分卸载和安装两部分:
一、精简卸载Chrome(替代Invoke-Expression的可靠写法)
直接用Start-Process代替Invoke-Expression,能完美解决卸载字符串的引号解析问题,同时代码还能保持简洁:
# 批量检查注册表项,卸载Chrome @( 'HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*', 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*', 'HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*' ) | Get-ItemProperty | Where-Object DisplayName -eq 'Google Chrome' | ForEach-Object { # 拆分带引号的卸载命令为路径和参数 $exe, $args = $_.UninstallString -split '" "', 2 Start-Process $exe.Trim('"') -ArgumentList $args.Trim('"') -Wait -NoNewWindow }
为什么这么写?
Invoke-Expression会把卸载字符串里的双引号当成PowerShell语法的一部分,导致路径解析失败;而Start-Process直接拆分路径和参数,能精准执行卸载命令,-Wait参数还能确保卸载完成后再继续后续操作。
二、安装指定版本Chrome
把指定版本的下载、静默安装和清理步骤整合起来,代码同样紧凑:
# 配置要安装的Chrome版本 $targetVersion = '117.0.5938.92' $installerTempPath = "$env:TEMP\chrome_setup.exe" # 下载指定版本安装包并静默安装 Invoke-WebRequest "https://dl.google.com/release2/chrome/ac9z734u7a4f89q90d3x12y3z_${targetVersion}/chrome_installer.exe" -OutFile $installerTempPath Start-Process $installerTempPath -ArgumentList '/silent /install' -Wait -NoNewWindow Remove-Item $installerTempPath -Force
说明
- 替换
$targetVersion的值就能切换到你需要的版本; /silent /install是Chrome安装包的静默安装参数,不会弹出任何窗口;- 安装完成后自动删除临时安装包,保持系统整洁。
合并成完整精简脚本
把两部分整合起来,就是一个短小高效的完整脚本:
# 卸载现有Chrome @( 'HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*', 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*', 'HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*' ) | Get-ItemProperty | Where-Object DisplayName -eq 'Google Chrome' | ForEach-Object { $exe, $args = $_.UninstallString -split '" "', 2 Start-Process $exe.Trim('"') -ArgumentList $args.Trim('"') -Wait -NoNewWindow } # 安装指定版本Chrome $targetVersion = '117.0.5938.92' $installerTempPath = "$env:TEMP\chrome_setup.exe" Invoke-WebRequest "https://dl.google.com/release2/chrome/ac9z734u7a4f89q90d3x12y3z_${targetVersion}/chrome_installer.exe" -OutFile $installerTempPath Start-Process $installerTempPath -ArgumentList '/silent /install' -Wait -NoNewWindow Remove-Item $installerTempPath -Force
备注:内容来源于stack exchange,提问作者Ercüment




