首页 > 解决方案 > 如果命令行开关遇到错误,如何终止脚本执行

问题描述

如果命令 let 遇到错误,我需要终止整个脚本执行。之后的整个脚本绝不能执行。就我而言,如果我使用 ThrowTerminatingError,它只会停止当前的命令行开关进一步执行,并且脚本的其余部分会执行我不想要的。

我已经使用了“PipelineStoppedException”,但这并没有说明错误流中的任何内容,并且没有异常可以成为捕获。因为 Invoke 调用成功终止。

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

标签: c#powershellerror-handlingcmdlet

解决方案


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

$ErrorActionPreference = "Stop"

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

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


推荐阅读