从powershell脚本中捕获perl错误

时间:2013-12-17 15:06:30

标签: perl powershell

我有一个简单的PowerShell脚本,可以调用perl脚本。当perl脚本失败时,我想捕获错误并将其放入变量中。

当我从powergui运行时,以下实际上有效:

try
{

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

}

但是当我从powershell命令提示符运行它时,$ perlerror变量没有填充错误消息。

谁知道为什么? 有没有更好的方法可以捕获perl错误?

1 个答案:

答案 0 :(得分:1)

try...catch语句仅处理Powershell上下文中的异常。 Perlexe运行Perl脚本,在Perl部分中提升的任何异常都在Perlexe的过程中处理。没有例外会回到Powershell。您只能在stdout或stderr上打印文本错误消息。

为了捕获stdout和stderr,请使用ikegami链接到的语法。像这样,

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