如何解决.bat文件无法运行Powershell 7
我已经设置了一个非常简单的.bat文件来执行几个命令,以免每次都键入它们,但是这些过程需要在Powershell 7中运行。
如果我手动运行powershell 7.0.3,然后运行命令,一切正常,但是开始运行.bat脚本
powershell -Version 7.0.3 -Command {XXXXX};
向我显示一条消息“由于未安装Windows PowerShell版本7.0.3,因此无法启动。”
如果我尝试在没有版本号的情况下运行它,则它将在5.1.x中运行,然后由于需要6+而失败。
解决方法
tl; dr
如Lee_Dailey所述,您必须使用pwsh.exe
,而不是powershell.exe
,来启动 PowerShell [Core] v6 +版本,并且您必须调用所需版本的特定可执行文件。
在最简单的情况下:
pwsh -Command "XXXXX"
请注意,我已将{XXXXX}
替换为"XXXXX"
,因为您不能直接从外部执行 script块({...}
) PowerShell-只需将命令作为 string 提供。
鉴于此-与Windows PowerShell不同-您可以并排安装多个 PowerShell [Core]版本 :
-
运行
pwsh -version
(参见下面的内容)以报告系统路径中的版本(该实例在PATH
环境变量{{1}中列出的目录中排在第一位) }。 -
如果不是您要定位的对象,则必须通过其完整路径调用它:
-
如果要依赖标准安装位置,则可以在Windows 7.0版上使用以下命令:
$env:PATH
-
要可靠地确定目标版本的可执行位置,请为其打开交互式控制台并运行
"C:\Program Files\PowerShell\7\pwsh.exe"
。
-
"$PSHOME\pwsh.exe"
的{{1}}参数, Windows PowerShell CLI,不允许只能启动任何 PowerShell版本,而只能是 Windows PowerShell 的旧版本:
- 实际上,仅受支持的参数是
-Version
,只有在您先前已经安装了所需的.NET Framework旧版本时,该参数才能成功。 - 注意事项:虽然高于v5.1的版本-最新和最新的Windows PowerShell版本-明智地导致出现错误(您看到的错误), 不受支持的较低版本被忽略 ;实际上,
powershell.exe
和-Version 2
都将从2.0版开始,而-Version 1
,-Version 2
和-Version 3
则被有效地忽略并运行v5.1-使用{ {1}}
PowerShell [Core] v6 + CLI在-Version 4
中仍然存在 -Version 5
参数 ,但含义已更改:
它现在简单地报告一个版本号,即目标可执行文件的自己 (因此不带参数)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。