2010-10-29 75 views
1

我有一个脚本模块,它的.psm1文件运行一个命令,如果某个注册表值不存在,该命令将会失败。我想忽略这个失败,因此名为.psm1脚本运行的命令:在开始工作初始化脚本中不会忽略的错误脚本

CommandThatMayFail -ea SilentlyContinue 

当我导入模块中的PowerShell会话这一切正常。但是这个模块中的一个功能启动了一些PS作业,这也需要导入模块。当我在作业的InitializationScript中导入模块时,CommandThatMayFail发生的故障不会被忽略,作业将终止。我尝试在Try/Catch块中包装CommandThatMayFail,但这没有任何帮助。

我已经通过在作业的ScriptBlock中导入模块而不是InitializationScript来避免此问题。但我仍然对这里发生的事情感到好奇。任何人都可以摆脱光线吗?

回答

0

尝试把在同一范围内InitializationScript陷阱,但它前面的代码:

Trap{ 
    <commands you want it to run in case of error>; 
    continue 
    } 

的重要组成部分,有分号和continue。我今天有同样的问题,具有讽刺意味的是,这固定了我。我认为这是终止/非终止错误和范围的问题,但这是我可以在我自己的脚本中解决它的唯一方法。

+0

陷阱没有比try/catch更好(正如我所预料的那样)。在我看来,如果在InitializationScript中发生任何非终止错误,PowerShell会使作业失败。 – OldFart 2010-11-01 15:53:38