powershell等同于简单:
bash test.sh
我想调用一个powershell脚本(来自powershell环境之外)并且如果成功执行则能够获得返回值0,否则返回非零值:
然后,如何访问这个返回值,在linux中将是
echo $?
答案 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)
然后使用您调用的任何应用程序读取最后一个退出代码。