万一Commandlet遇到错误,如何终止脚本执行

时间:2018-07-19 12:12:22

标签: c# powershell error-handling cmdlet

如果让let遇到错误,我需要终止整个脚本执行。之后的整个脚本永远都不能执行。就我而言,如果我使用ThrowTerminateError,它将停止当前的Commandlet进一步执行,而其余脚本将执行我不希望的脚本。

我已经使用过“ PipelineStoppedException”,但这在错误流中什么都没有告诉,也没有异常可以被抓住。因为调用调用成功终止。

我该如何实现?我想用异常消息终止整个脚本执行。以下是我在Commandlet中使用的C#代码,但仍允许其余脚本继续继续执行。

修改

protected override void BeginProcessing()
{
       base.BeginProcessing();

        if (SomeLogicTrue())
        {               
            var errorRecord = PowershellErrorHandler.GetErrorRecord(new PipelineStoppedException("access is not supported for this context."), "InvalidExecutionContext");
            ThrowTerminatingError(errorRecord);
        }
 }

1 个答案:

答案 0 :(得分:2)

在脚本开头将错误操作首选项设置为“停止”。

$ErrorActionPreference = "Stop"

现在,即使脚本抛出无终止错误,它也会立即停止。

我建议您也阅读An Introduction to Error Handling in PowerShell