如何在commandlet遇到错误时终止脚本执行



如果命令let遇到错误,我需要终止整个脚本的执行。之后的整个脚本决不能执行。在我的例子中,如果我使用ThrowTerminatingError,它只会停止当前commandlet的进一步执行,而脚本的其余部分则会执行我不想要的。

我已经使用了"PipelineStoppedException",但这并不能说明错误流中的任何内容,并且任何异常都不能被捕获。因为Invoke调用已成功终止。

我怎样才能做到这一点?我想用异常消息终止整个脚本的执行。下面是我在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);
}
}

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

$ErrorActionPreference = "Stop"

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

我建议您也阅读PowerShell中的错误处理简介。

最新更新