PowerShell从5.1升级到7.X

文章目录

  • 环境
  • 背景
  • [安装PowerShell 7.X](#安装PowerShell 7.X)
  • 其它
    • [启动PowerShell 5.1和7.X](#启动PowerShell 5.1和7.X)
    • [PSVersionTable.PSVersion](#PSVersionTable.PSVersion)
    • [启动PowerShell 5.1时强制启动7.X](#启动PowerShell 5.1时强制启动7.X)
  • 参考

环境

  • Windows 11 专业版

背景

PowerShell 5.1是Windows内置的,发布时间是2016 年。现在PowerShell版本已经到了7.5.1,不过需要手工安装。

另外,由于兼容性(模块兼容性和.NET依赖)的问题,安装PowerShell 7.X并不会覆盖5.1,二者可以同时并存。

  • PowerShell 5.1的位置是 C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
  • PowerShell 7.X的位置是 C:\Program Files\PowerShell\7\pwsh.exe

安装PowerShell 7.X

打开 https://github.com/PowerShell/PowerShell/releases ,我看到的最新版本是v7.5.1,在Assets下找到合适的操作系统。注意,默认只列出了前面一部分,需要点击 Show all 28 assets 才会全部列出来:

我下载的文件是 PowerShell-7.5.1-win-x86.exe

下载后双击安装,安装过程略。

其它

启动PowerShell 5.1和7.X

如上所述,PowerShell 5.1和7.X的安装位置不同,文件名也不同,所以二者可以并存。

  • 启动PowerShell 5.1: powershell
  • 启动Powershell 7.X: pwsh

注:安装Powershell 7.X时,会自动添加路径,而Powershell 5.1本来就在路径里。

$PSVersionTable.PSVersion

可以用 $PSVersionTable.PSVersion 命令查看当前shell的版本:

  • Powershell 5.1:
powershell 复制代码
PS C:\Users\Administrator> $PSVersionTable.PSVersion

Major  Minor  Build  Revision
-----  -----  -----  --------
5      1      22621  2506
  • Powershell 7.X:
powershell 复制代码
PS C:\Users\Administrator> $PSVersionTable.PSVersion

Major  Minor  Patch  PreReleaseLabel BuildLabel
-----  -----  -----  --------------- ----------
7      5      1

启动PowerShell 5.1时强制启动7.X

如果想要在运行PowerShell 5.1时也强制运行7.X,则可以通过修改配置文件来达到目的。

首先定位配置文件:

powershell 复制代码
PS C:\Users\Administrator> echo $profile
C:\Users\Administrator\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1

注:在Powershell 5.1或者7.X下,其 $profile 是一样的。

编辑这个文件(如果不存在则创建之):

powershell 复制代码
if ($PSVersionTable.PSVersion.Major -lt 7) {
    pwsh
    exit
}

逻辑很简单,检查版本号,如果小于7,则启动 pwsh (即Powershell 7.X),并结束自身。

现在,启动Powershell 5.1(运行 powershell 或者从开始菜单选中 Windows PowerShell ),报错了:

powershell 复制代码
. : 无法加载文件 C:\Users\Administrator\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1,因为在此系统上禁
止运行脚本。有关详细信息,请参阅 https:/go.microsoft.com/fwlink/?LinkID=135170 中的 about_Execution_Policies。
所在位置 行:1 字符: 3
+ . 'C:\Users\Administrator\Documents\WindowsPowerShell\Microsoft.Power ...
+   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : SecurityError: (:) [],PSSecurityException
    + FullyQualifiedErrorId : UnauthorizedAccess

这个报错与系统安装策略有关。要解决这个问题,需要调整执行策略以允许运行脚本。

首先查看当前策略:

powershell 复制代码
PS C:\Users\Administrator> Get-ExecutionPolicy -List

        Scope ExecutionPolicy
        ----- ---------------
MachinePolicy       Undefined
   UserPolicy       Undefined
      Process       Undefined
  CurrentUser       Undefined
 LocalMachine       Undefined

CurrentUser 的策略调整为 RemoteSigned

powershell 复制代码
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned -Force

验证修改:

powershell 复制代码
PS C:\Users\Administrator> Get-ExecutionPolicy -List

        Scope ExecutionPolicy
        ----- ---------------
MachinePolicy       Undefined
   UserPolicy       Undefined
      Process       Undefined
  CurrentUser    RemoteSigned
 LocalMachine       Undefined

再次启动PowerShell 5.1:

powershell 复制代码
Windows PowerShell
版权所有(C) Microsoft Corporation。保留所有权利。

安装最新的 PowerShell,了解新功能和改进!https://aka.ms/PSWindows

PowerShell 7.5.1
PS C:\Users\Administrator>

可见,成功启动了PowerShell 7.X。可以用 $PSVersionTable.PSVersion 来验证版本。

参考

  • https://github.com/PowerShell/PowerShell/releases
相关推荐
十五年专注C++开发1 小时前
MinHook:Windows 平台下轻量级、高性能的钩子库
c++·windows·钩子技术·minhook
dongdonglele5214 小时前
ros2环境安装
windows
muinomarts4 小时前
【Windows挂载夸克网盘到本地 AList+Raidrive】
windows
Sharewinfo_BJ5 小时前
PowerBI 2026年1月功能更新|效率升级,体验再优化
windows·microsoft·powerbi
yaoxin5211235 小时前
314. Java Stream API - 使用 Collectors.partitioningBy() 分区元素
java·windows
云小逸6 小时前
【windows核心编程】Windows GDI编程深度解析:从消息循环到双缓冲动画的完整实现
windows
奋斗羊羊8 小时前
rocketmq 及依赖环境编译安装过程记录(windows)
windows·rocketmq
鲨辣椒100869 小时前
Linux软件编程基石——基础指令使用
linux·windows·microsoft
云小逸10 小时前
【Nmap 源码学习】深度解析:main.cc 入口函数详解
网络·windows·学习·nmap
郝学胜-神的一滴10 小时前
Python美学的三重奏:深入浅出列表、字典与生成器推导式
开发语言·网络·数据结构·windows·python·程序人生·算法