我有一个简单的PowerShell脚本,可以调用perl脚本。当perl脚本失败时,我想捕获错误并将其放入变量中。
当我从powergui运行时,以下实际上有效:
try
{
$erroractionpreference = "Stop"
perlexe c:\perlscript.pl -perlparameters param1
}
catch
{
$perlerror = $_.Exception.Message;
}
但是当我从powershell命令提示符运行它时,$ perlerror变量没有填充错误消息。
谁知道为什么? 有没有更好的方法可以捕获perl错误?答案 0 :(得分:1)
try...catch
语句仅处理Powershell上下文中的异常。 Perlexe运行Perl脚本,在Perl部分中提升的任何异常都在Perlexe的过程中处理。没有例外会回到Powershell。您只能在stdout或stderr上打印文本错误消息。
为了捕获stdout和stderr,请使用ikegami链接到的语法。像这样,
$cmdOutput = perlexe c:\perlscript.pl -perlparameters param1 2>&1