批处理文件无法运行PowerShell 7.

3
我已经设置了一个非常简单的.bat文件,用于执行几个命令以节省每次输入它们的时间,但是这些进程需要在powershell 7中运行。
如果我手动运行powershell 7.0.3,然后运行这些命令,一切都可以工作,但是运行.bat脚本时就会出问题。
powershell -Version 7.0.3 -Command {XXXXX};

出现错误提示"无法启动 Windows PowerShell 7.0.3 版本,因为它没有被安装。"

如果我尝试不带版本号运行它,则会以 5.1.x 版本运行,但由于需要 6+ 版本,所以会失败。


6
PS7的可执行文件不是powershell.exe,而是pwsh.exe。[微笑] - Lee_Dailey
1个回答

5

简介

Lee_Dailey所述,您必须使用pwsh.exe而不是powershell.exe,以启动PowerShell [Core] v6+的版本,并且您必须调用所需版本的特定可执行文件

在最简单的情况下:

pwsh -Command "XXXXX"

请注意,我已将{XXXXX}替换为"XXXXX",因为您无法直接从PowerShell 外部执行脚本块({...}) - 只需将命令作为字符串提供。


考虑到-与Windows PowerShell不同-您可以并排安装多个PowerShell [Core]版本

  • 运行pwsh -version(如下所示)以报告系统路径中的版本(在列出的目录中第一个实例PATH环境变量,$env:PATH)。

  • 如果不是您想要定位的版本,则必须通过其完整路径来调用它:

    • 如果您想依靠标准安装位置,则可以在Windows上使用以下方法获取7.0版本:"C:\Program Files\PowerShell\7\pwsh.exe"

    • 要可靠地确定目标版本的可执行位置,请打开交互式控制台并运行:(Get-Process -Id $PID).Path


powershell.exe-Version参数,Windows PowerShell CLI,不允许您启动任意PowerShell版本,只能启动较旧版本的Windows PowerShell:

  • 实际上,唯一支持的参数是-Version 2,即使如此,仅当您先安装所需的旧版.NET Framework时才会成功。
  • 注意:虽然高于v5.1的版本 - 最新和最后一个Windows PowerShell版本 - 合理地产生一个错误(您看到的错误),不受支持的低版本会静默忽略;实际上,-Version 1-Version 2都将启动版本2.0,而-Version 3-Version 4-Version 5实际上被忽略并运行v5.1-用$PSVersionTable.PSVersion验证

虽然在 pwsh.exe 中仍存在一个 -Version 参数,但 PowerShell [Core] v6+ CLI 的含义已经改变:它现在只是简单地报告版本号,即目标可执行文件自身的版本号 (因此不需要任何参数)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接