簡體   English   中英

執行powershell語句后檢測錯誤

[英]Detecting error after a powershell statement is executed

我使用PowerShell來運行sqlplus ,我希望PowerShell能夠檢測腳本運行后是否有錯誤並執行某些操作而不是查看結果文件。

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

通常在DOS中,當命令遇到錯誤時有%errorlevel%,我想知道PowerShell中是否有類似的東西?

當然,我自己可以閱讀日志文件,但有時候,事情變得過於常規,我可能會忘記。

我的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:術語“errorlevel”未被識別為cmdlet,函數,腳本文件或可操作程序的名稱。 檢查名稱的拼寫,或者如果包含路徑,請驗證路徑是否正確,然后重試。

在powershell中檢查錯誤的正確方法是什么?

UPDATE

我用過這個:

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

由於您正在調用可執行文件 ,因此您可能希望檢查$LASTEXITCODE變量或sqlplus的返回值 在PowerShell中,每個變量都有一個$前綴。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM