2013-12-17 80 views
1

我有一個簡單的powershell腳本來調用perl腳本。當perl腳本失敗時,我想捕獲錯誤並將其放入一個變量中。從powershell腳本中捕獲perl錯誤

try 
{ 

$erroractionpreference = "Stop" 
perlexe c:\perlscript.pl -perlparameters param1 
} 
catch 
{ 
$perlerror = $_.Exception.Message; 

} 

,但是當我從PowerShell命令運行它提示$ perlerror變量不會出現錯誤消息填充:

,當我從PowerGUI的運行它實際上以下工作。

有人知道爲什麼嗎? 有沒有更好的方法可以捕獲perl錯誤?

+1

Dup of http://stackoverflow.com/questions/8184827? – ikegami

回答

1

try...catch語句僅處理Powershell上下文中的異常。 Perlexe運行一個Perl腳本,並且在Perl部分中提升的任何異常都在Perlexe的流程中處理。沒有例外會回到Powershell。所有你可以得到的都是打印在stdout或stderr上的文本錯誤消息。

爲了捕獲標準輸出和標準錯誤,使用ikegami鏈接到的語法。像這樣,

$cmdOutput = perlexe c:\perlscript.pl -perlparameters param1 2>&1