Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.Bat文件无法运行powershell 7_Powershell_Batch File_Cmd - Fatal编程技术网

.Bat文件无法运行powershell 7

.Bat文件无法运行powershell 7,powershell,batch-file,cmd,Powershell,Batch File,Cmd,我已经设置了一个非常简单的.bat文件来执行两个命令,以节省每次键入命令的时间,但是这些进程需要在powershell 7中运行 如果我手动运行powershell 7.0.3,然后运行命令,则一切正常,但运行.bat脚本启动 powershell -Version 7.0.3 -Command {XXXXX}; 向我显示一条消息“无法启动Windows PowerShell 7.0.3版,因为它未安装。” 如果我尝试在没有版本号的情况下运行它,那么它将在5.1.x中运行,然后失败,因为它需要

我已经设置了一个非常简单的.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

请注意,您必须使用而不是来启动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”

    • 要可靠地确定目标版本的可执行位置,请为其打开一个交互式控制台,然后运行“
      ”$PSHOME\pwsh.exe”


Windows powershell CLI的
-Version
-Version
参数不允许您仅启动任何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
虽然PowerShell[Core]v6+CLI中的
参数仍然存在,但其含义已更改
它现在只报告一个版本号,即目标可执行文件自己的版本号(因此不带参数)。

ps7的exe不是
powershell.exe
。。。它是
pwsh.exe
。。。[咧嘴笑]