执行powershell语句后检测错误

时间:2017-04-28 11:52:23

标签: powershell sqlplus

我正在使用powershell来运行sqlplus,我希望PowerShell能够检测脚本运行后是否有错误并执行某些操作而不是查看结果文件。

& 'sqlplus' 'system/myOraclePassword' '@Test' | out-file 'result.txt';

通常在DOS下,当命令遇到错误时有%errorlevel%,我想知道PowerShell中是否有类似的内容?

当然,我可以自己阅读日志文件,但有时候,事情太常规了,我可能会忘记。

My Test.sql:

select level from dual
connect by level<5;
select 10/0 from dual;
quit;

显然存在零误差除法。 result.txt捕获了它,但我希望powershell能够检测到它

SQL*Plus: Release 12.1.0.2.0 Production on Thu Apr 27 16:24:30 2017

Copyright (c) 1982, 2014, Oracle.  All rights reserved.

Last Successful login time: Thu Apr 27 2017 16:17:34 -04:00

Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options


     LEVEL
----------
     1
     2
     3
     4

select 10/0 from dual
         *
ERROR at line 1:
ORA-01476: divisor is equal to zero

PowerShell语句在执行语句后会返回错误级别吗?

我试过了:

& 'sqlplus' 'system/myOraclePassword' '@Test' | out-file 'result.txt';
if (errorlevel 1)
{ write-host error;
}
else
{ write-host ok;
}

但这导致了语法错误?

  

errorlevel:术语&#39; errorlevel&#39;不被识别为cmdlet的名称,   功能,脚本文件或可操作程序。检查拼写   名称,或者如果包含路径,请验证路径是否正确   再试一次。

在powershell中检查错误的正确方法是什么?

更新

我用过这个:

if ($LASTEXITCODE -ne 0 )
{ 
write-host error;
}
else
{ 
write-host ok;
}

1 个答案:

答案 0 :(得分:3)

由于您正在调用可执行文件,因此您可能需要检查sqlplus的$LASTEXITCODE变量或返回值。在PowerShell中,每个变量都有一个$前缀。