【发布时间】:2018-12-27 13:52:09
【问题描述】:
如果命令 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);
}
}
【问题讨论】:
-
不要以为您可以将整个脚本放在TryCatchFinally 中吗?
-
不,脚本将在某些特定环境下运行,它们可能永远不会包含任何 tryCatch 块。我有自己的基于 C# 的命令行开关,我想抛出一个异常,该异常根本不允许进一步执行脚本的其余部分
-
你问的是不可能的。没有“无法捕获”的异常,您的代码可能不会引发段错误或类似情况。
标签: c# powershell error-handling cmdlet