微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

.bat文件无法运行Powershell 7

如何解决.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] 举报,一经查实,本站将立刻删除。