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

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

相关文章:

  • C++类_运算符的重载
  • 线性DP(动态规划)
  • flask 获取各种请求数据:GET form-data x-www-form-urlencoded JSON headers 上传文件
  • 物联网智能项目之——智能家居项目的实现!
  • 开源项目实战学习之YOLO11:ultralytics-cfg-models-rtdetr(十一)
  • 循环缓冲区
  • 实验-组合电路设计1-全加器和加法器(数字逻辑)
  • 大数据:驱动技术创新与产业转型的引擎
  • 节流 和 防抖的使用
  • 【C语言练习】018. 定义和初始化结构体
  • ai之paddleOCR 识别PDF python312和paddle版本冲突 GLIBCXX_3.4.30
  • 提升办公效率的PDF转图片实用工具
  • 学习黑客资产威胁分析贴
  • 《MATLAB实战训练营:从入门到工业级应用》趣味入门篇-用声音合成玩音乐:MATLAB电子琴制作(超级趣味实践版)
  • NocoDB:开源的 Airtable 替代方案
  • 二叉树最近公共祖先(后序遍历,回溯算法)
  • springboot war包tomcat中运行报错,启动过滤器异常,一个或多个筛选器启动失败。
  • 关于Python:7. Python数据库操作
  • 经典算法 求解硬币组成问题
  • 基于大模型的肾结石诊疗全流程风险预测与方案制定研究报告
  • 以色列计划“占领加沙”,特朗普下周中东行结束之际将是“机会窗口”
  • 山东滕州一车辆撞向公交站台撞倒多人,肇事者被控制,案件已移交刑警
  • “穿越看洪武”,明太祖及其皇后像台北故宫博物院南园展出
  • 贵州省委省政府迅速组织开展黔西市游船倾覆事故救援工作
  • 上千游客深夜滞留张家界大喊退票?当地通报情况并致歉
  • 长三角铁路今日预计发送旅客398万人次,客流持续保持高位运行