首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在使用写错误后退出带有exitcode的powershell脚本?

如何在使用写错误后退出带有exitcode的powershell脚本?
EN

Stack Overflow用户
提问于 2022-08-13 12:47:26
回答 1查看 144关注 0票数 1

我注意到,如果我使用Write-Error,在使用exit 123之后,$lastexitcode变量没有改变,相反,它仍然包含前面命令中的退出代码。

如果我有这些文件:

test-out.ps1

代码语言:javascript
复制
Write-Output "hello"
exit 3

test-err.ps1

代码语言:javascript
复制
Write-Error "hello"
exit 123

然后我调用了一个powershell:

代码语言:javascript
复制
.\test-out.ps1
// displays: hello
$lastexitcode
// displays: 3

.\test-err.ps1
// displays: Write-Error: hello
$lastexitcode
// also/still displays: 3

我期望$lastexitcode.\test-err.ps1之后成为123

我的解决办法是使用[Console]::Error.WriteLine("hello"),但是似乎写错误应该是最好的方法。

文档

若要写入非终止错误,请输入错误消息字符串、ErrorRecord对象或异常对象。使用写错误的其他参数填充错误记录。

它没有提到它将阻止设置自定义退出代码。更糟糕的是,使用它根本不会设置退出代码。如果以前是0,那么在使用Write-Error之后,exit 1甚至不能工作。

我是不是遗漏了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-13 13:08:14

你的症状意味着:

  • 您的exit 123语句从未被执行
  • 这反过来意味着Write-Error在默认情况下发出一个非终止错误,碰巧发出一个脚本终止错误,
  • 这反过来意味着$ErrorActionPreference = 'Stop'是有效的。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73344421

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档