2013-12-17 64 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