在包含尖括号的工作目录中执行powershell

在包含尖括号的工作目录中执行powershell,powershell,powershell-2.0,windows-server-2008-r2,Powershell,Powershell 2.0,Windows Server 2008 R2,假设我在一个目录中有两个文件,路径中有尖括号(例如c:\foo[bar]) test.ps1 test.bat 在test.ps1中,我只有: "HelloWorld" 在test.bat中我有: powershell -file test.ps1 echo %errorlevel% 在安装powershell v2的地方,如果我在命令提示符下执行test.bat,工作目录在foo[bar]中,我会从ps脚本中获得“HelloWorld”输出,但错误代码1会回显到控制台。如果路径不包含尖

假设我在一个目录中有两个文件,路径中有尖括号(例如
c:\foo[bar]

  • test.ps1
  • test.bat
test.ps1
中,我只有:

"HelloWorld"
test.bat中
我有:

powershell -file test.ps1
echo %errorlevel%
在安装powershell v2的地方,如果我在命令提示符下执行
test.bat
,工作目录在
foo[bar]
中,我会从ps脚本中获得“HelloWorld”输出,但错误代码1会回显到控制台。如果路径不包含尖括号,或者在安装了powershell v3的实例中(“HelloWorld”被输出,并且0作为错误代码返回),则不会发生这种情况

在使用powershell v2可执行文件和
-file
开关时,这似乎是一个问题。我的第一个假设是这是一个bug,但我在这个特定问题上找不到任何东西


是否有任何解决方法或解决方案?

您可能应该让脚本本身指定退出代码。首先我要读一读:但是Keith Hill的顶部评论可能更具体地针对您的情况。

实际上,我认为您遇到了V3错误,导致退出代码始终为0。请参阅,解决方法是使用-command参数而不是-file。实际上,这解决了v2和v3的问题。如果我用退出0显式结束脚本,那么我在bat文件中得到正确的错误代码。谢谢