如果我手动运行powershell 7.0.3,然后运行这些命令,一切都可以工作,但是运行.bat脚本时就会出问题。
powershell -Version 7.0.3 -Command {XXXXX};
出现错误提示"无法启动 Windows PowerShell 7.0.3 版本,因为它没有被安装。"
如果我尝试不带版本号运行它,则会以 5.1.x 版本运行,但由于需要 6+ 版本,所以会失败。
powershell -Version 7.0.3 -Command {XXXXX};
出现错误提示"无法启动 Windows PowerShell 7.0.3 版本,因为它没有被安装。"
如果我尝试不带版本号运行它,则会以 5.1.x 版本运行,但由于需要 6+ 版本,所以会失败。
简介
如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时才会成功。-Version 1
和-Version 2
都将启动版本2.0,而-Version 3
,-Version 4
和-Version 5
实际上被忽略并运行v5.1-用$PSVersionTable.PSVersion
验证虽然在 pwsh.exe
中仍存在一个 -Version
参数,但 PowerShell [Core] v6+ CLI 的含义已经改变:它现在只是简单地报告版本号,即目标可执行文件自身的版本号 (因此不需要任何参数)。
powershell.exe
,而是pwsh.exe
。[微笑] - Lee_Dailey