PowerShell 7.5.4 升级复盘:从版本提示到一键完成的三种路径
当终端弹出新版本提示时,我是如何在1分钟内完成安全升级的

问题是怎么出现的
今天打开PowerShell准备处理一些脚本任务,刚进入终端就看到了一行熟悉的提示:
PowerShell 7.5.4
A new PowerShell stable release is available: v7.6.0
Upgrade now, or check out the release page at:
https://aka.ms/PowerShell-Release?tag=v7.6.0
PS C:\Users\Administrator>这是PowerShell内置的版本检测提示,说明我当前用的7.5.4已经不是最新的稳定版了。
最开始我怀疑了什么
看到这个提示的第一反应,其实是有点犹豫的。之前升级系统工具的时候,总怕覆盖安装会出问题,比如会不会把之前配置的PowerShell模块、环境变量搞乱?或者是不是要先卸载旧版本,再装新版本?
甚至最开始我已经点开了那个release链接,准备手动找安装包下载——毕竟以前老版本的PowerShell,好像都是这么干的。
哪些表象其实是误导
最开始的误判,其实是把PowerShell当成了那种需要手动管理的旧软件。我以为像以前一样,必须去官网下安装包,一步步点下一步,还要担心覆盖的问题。
而且我最开始还担心,winget是不是我这个环境没有?毕竟有些精简版的系统,默认是不带winget的,如果用不了的话,是不是还要先装winget?这反而会把事情搞复杂。
还有个误导是,我以为升级之后,之前装的那些模块比如oh-my-posh会不会失效?毕竟版本跨了小版本,会不会有兼容性问题?
我看到了什么关键证据
冷静下来之后,我先去查了微软官方的PowerShell升级文档,才发现现在的PowerShell Core(也就是7.x版本),早就支持原地覆盖升级了,根本不需要卸载旧版本,安装程序会自动替换文件,同时保留所有的用户配置、模块和环境变量。
然后我发现,微软其实提供了好几种升级方式,适配不同的环境:
- 如果是带winget的Windows 11或者新版Windows 10,直接用winget一键就能搞定,这是最快的。
- 如果没有winget,官方还有个一键安装脚本,一行命令就能自动下载安装最新版。
- 如果是离线环境,那才需要手动下MSI包,覆盖安装就行。
而且我还验证了,升级之后,之前的所有模块、配置都完好无损,甚至连我开的oh-my-posh主题都没变化,只是版本更新了。
真正根因是什么
其实这个问题的本质,就是PowerShell 7.x的迭代更新,旧版本的内置版本检测机制提醒你有新版本可用。而PowerShell Core从设计上就支持增量升级,不需要复杂的卸载重装,这和Windows自带的旧版PowerShell 5.1是完全不同的。
之前的那些担心,其实都是旧版PowerShell留下的思维惯性,现在的跨平台PowerShell,早就把升级这件事做得非常简单了。
最终修复方案
整理下来,有三种最实用的升级方式,覆盖绝大多数场景:
方法1:winget 一键升级(推荐,最快)
如果你是Windows 11或者新版Windows 10,自带winget工具,直接在当前PowerShell窗口执行这条命令就行:
winget install --id Microsoft.PowerShell --source winget --force这条命令会自动拉取最新的稳定版PowerShell,覆盖安装,全程不需要你操作任何东西。
PowerShell 7.5.4
A new PowerShell stable release is available: v7.6.0
Upgrade now, or check out the release page at:
https://aka.ms/PowerShell-Release?tag=v7.6.0
PS C:\Users\Administrator> winget install --id Microsoft.PowerShell --source winget --force
已找到 PowerShell [Microsoft.PowerShell] 版本 7.6.0.0
此应用程序由其所有者授权给你。
Microsoft 对第三方程序包概不负责,也不向第三方程序包授予任何许可证。
正在下载 https://github.com/PowerShell/PowerShell/releases/download/v7.6.0/PowerShell-7.6.0-win-x64.msi
██████████████████████████████ 109 MB / 109 MB
已成功验证安装程序哈希
正在启动程序包安装...
已放弃安装
PS C:\Users\Administrator> winget install --id Microsoft.PowerShell --source winget --force
已找到 PowerShell [Microsoft.PowerShell] 版本 7.6.0.0
此应用程序由其所有者授权给你。
Microsoft 对第三方程序包概不负责,也不向第三方程序包授予任何许可证。
已成功验证安装程序哈希
正在启动程序包安装...
已成功安装
PS C:\Users\Administrator>方法2:官方脚本升级(无winget也能用)
如果你的系统没有winget,比如精简版系统,或者旧版Windows,用微软官方的升级脚本,一行命令搞定:
irm https://aka.ms/install-powershell.ps1 | iex这个脚本会自动检测你的系统架构,下载对应的安装包,自动完成安装,完全不用你管。
方法3:手动安装包(离线/服务器环境)
如果是离线环境,或者服务器不能连外网,那就手动下载安装包:
- 打开官方发布页:https://aka.ms/PowerShell-Release?tag=v7.6.0
- 下滑找到Assets区域,下载对应你系统的MSI安装包,比如Windows 64位就下
PowerShell-7.6.0-win-x64.msi - 双击运行,一路下一步,覆盖安装就行,不会丢任何配置。
验证升级结果
安装完成之后,一定要关闭当前的PowerShell窗口,重新打开,然后执行这条命令验证版本:
$PSVersionTable.PSVersion如果输出是7.6.0,就说明升级成功了。
PowerShell 7.6.0
PS C:\Users\Administrator> $PSVersionTable.PSVersion
Major Minor Patch PreReleaseLabel BuildLabel
----- ----- ----- --------------- ----------
7 6 0
PS C:\Users\Administrator>这次排查最值得记住的经验
- 别用旧思维套新工具:PowerShell 7.x和旧的Windows自带PowerShell 5.1完全是两个东西,升级逻辑早就变了,不用再担心覆盖安装出问题。
- 优先用系统包管理器:winget现在真的很方便,大部分系统工具都能一键升级,比手动下安装包快太多。
- 不同环境选不同方案:有网的环境用脚本或者winget,离线环境才用手动包,不用死磕一种方法。
- 升级后一定要重启终端:不然你看到的还是旧版本的进程,会误以为没升级成功。
“同频之人,终会相遇;同行之路,终有光亮。”
梦行志
