当前位置: 首页 > java >正文

PowerShell从5.1升级到7.X

文章目录

  • 环境
  • 背景
  • 安装PowerShell 7.X
  • 其它
    • 启动PowerShell 5.1和7.X
    • $PSVersionTable.PSVersion
    • 启动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:
PS C:\Users\Administrator> $PSVersionTable.PSVersionMajor  Minor  Build  Revision
-----  -----  -----  --------
5      1      22621  2506
  • Powershell 7.X:
PS C:\Users\Administrator> $PSVersionTable.PSVersionMajor  Minor  Patch  PreReleaseLabel BuildLabel
-----  -----  -----  --------------- ----------
7      5      1

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

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

首先定位配置文件:

PS C:\Users\Administrator> echo $profile
C:\Users\Administrator\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1

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

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

if ($PSVersionTable.PSVersion.Major -lt 7) {pwshexit
}

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

现在,启动Powershell 5.1(运行 powershell 或者从开始菜单选中 Windows 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

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

首先查看当前策略:

PS C:\Users\Administrator> Get-ExecutionPolicy -ListScope ExecutionPolicy----- ---------------
MachinePolicy       UndefinedUserPolicy       UndefinedProcess       UndefinedCurrentUser       UndefinedLocalMachine       Undefined

CurrentUser 的策略调整为 RemoteSigned

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned -Force

验证修改:

PS C:\Users\Administrator> Get-ExecutionPolicy -ListScope ExecutionPolicy----- ---------------
MachinePolicy       UndefinedUserPolicy       UndefinedProcess       UndefinedCurrentUser    RemoteSignedLocalMachine       Undefined

再次启动PowerShell 5.1:

Windows PowerShell
版权所有(C) Microsoft Corporation。保留所有权利。安装最新的 PowerShell,了解新功能和改进!https://aka.ms/PSWindowsPowerShell 7.5.1
PS C:\Users\Administrator>

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

参考

  • https://github.com/PowerShell/PowerShell/releases
http://www.xdnf.cn/news/3692.html

相关文章:

  • 深挖Java之:运算符与输入器
  • #Paper Reading# DeepSeek-R1
  • DeepSeek与MySQL:开启数据智能新时代
  • Java SE(7)——类和对象(二)
  • 【Java Stream流-59】Java Stream流式编程:高效、优雅的数据处理之道
  • [案例二] 菜单条制作(Menuscript)与工具条制作(Toolbar)
  • Python基础语法
  • 【Arthas】火焰图优化应用CPU(问题原因:获取调用栈)
  • C语言字符函数和字符串函数详解:从基础到实战
  • C语言奇幻指南:宏、头文件与变量的秘密世界
  • 二、机器学习中Python变量基础
  • 防范反序列化攻击:如何安全处理敏感数据序列化
  • 【C/C++】MQTT
  • Git从入门到精通-第三章-获取Git仓库
  • 【Agent搭建】利用coze平台搭建一个AI销售?
  • Spring MVC @RequestBody 注解怎么用?接收什么格式的数据?
  • 重载和覆写有什么区别?
  • 18、状态库:中央魔法仓库——React 19 Zustand集成
  • STM32基础教程——软件I2C
  • 力扣-字符串-165 比较版本号
  • 【算法基础】递归算法 - JAVA
  • C++ STL vector容器详解:从原理到实践
  • Python绘制地球的重力地图
  • <servlet-class>和</url-pattern>的作用
  • Oracle VirtualBox 在 Windows 上的详细安装步骤
  • AnimateCC教学:照片旋转飞舞并爆炸....
  • NV189NV195美光固态闪存NV197NV199
  • 什么是“原子变量”?
  • 【vscode】.dart文件没有错误波浪线
  • Dubbo(93)如何在电商系统中应用Dubbo?