Powershell退出状态

时间:2017-03-29 13:19:11

标签: windows powershell cmd

powershell等同于简单:

bash test.sh

我想调用一个powershell脚本(来自powershell环境之外)并且如果成功执行则能够获得返回值0,否则返回非零值:

  • 无法找到或执行powershell可执行文件
  • 无法找到或执行脚本test.ps1(权限不足,......)
  • 脚本test.ps1可以被读取并执行但返回非零值

然后,如何访问这个返回值,在linux中将是

echo $?

3 个答案:

答案 0 :(得分:1)

在cmd中,您可以使用%ERRORLEVEL%变量来检查上一个命令返回的任何错误代码。如果这不正确或未找到,则与零不同。 这将解决前2个案例,其中找不到powershell.exe或找不到脚本。

要从powershell脚本返回错误代码,请使用exit <errorcode>语句。

您可以使用$LASTEXITCODE变量在PS中查看此内容。 要将其返回到调用批处理过程,可以使用以下结构:

powershell.exe -noprofile -command ". c:\t\returnCode.ps1 ; exit $LASTEXITCODE "
if %errorlevel%==0 (echo "yep") else (echo "nope")

returncode.ps1脚本的位置如下:

# do stuff
exit 1234

答案 1 :(得分:1)

只需使用

powershell -file foo.ps1

应该有效:

C:\>set PATH=
C:\>powershell -file Untitled1.ps1
'powershell' is not recognized as an internal or external command,
operable program or batch file.
C:\>echo %errorlevel%
9009

C:\>powershell -File not-there.ps1
The argument 'not-there.ps1' to the -File parameter does not exist. Provide the path to an existing '.ps1' file as an argument to the -File parameter.
Windows PowerShell
Copyright (C) 2016 Microsoft Corporation. All rights reserved.
C:\>echo %errorlevel%
-196608

C:\>powershell -file exitcode.ps1
C:\>echo %errorlevel%
1337

答案 2 :(得分:0)

如果您可以修改powershell脚本,则可以使用以下命令设置退出代码:

[Environment]::Exit(yourexitcode)

然后使用您调用的任何应用程序读取最后一个退出代码。