You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何用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

火山引擎 最新活动