c# - 如果命令行开关遇到错误,如何终止脚本执行
问题描述
如果命令 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);
}
}
解决方案
在脚本开头将错误操作首选项设置为“停止”。
$ErrorActionPreference = "Stop"
现在,即使脚本抛出非终止错误,它也会立即停止。
我建议您也阅读PowerShell 中的错误处理简介。
推荐阅读
- regex - 使用 RegEx 查找单词中的唯一字符
- postgresql - PSQLException:错误:无法打开文件 - 不允许操作
- typescript - 从云函数“Closure: () => Map”调用数据时出现问题
来自函数‘数据’:。” - python - 具有不同列数的 Concat 数据帧
- javascript - 如何查找整个值列表是否表示在一维对象数组中?
- javascript - Vue 3 Checkbox 在点击时未选中和取消选中
- php - Google OAuth,刷新令牌无效
- java - 远程调试另一个城市的应用程序
- django - Django REST 归档结果
- database - RDS Postgres 实例的连接问题