gpt4 book ai didi

powershell - 在自动构建过程中使用脚本

转载 作者:行者123 更新时间:2023-12-01 13:03:25 24 4
gpt4 key购买 nike

我编写了一个 Powershell 脚本,它将用于自动构建过程。

当脚本将采用正确的路径时(例如,不进入指示错误条件的 if block ),我是否需要编写退出代码 0?

另外,exit(带代码)和$host.SetShouldExit()有什么区别?

最佳答案

在类似的场景中,我依赖异常(抛出)和其他类型的终止错误:在这种情况下,PowerShell 的退出代码为 1。如果脚本自行完成(即使没有终止错误),那么 PowerShell 的退出代码为 0,我们不必调用 exit 0。如果我们需要的不是 0 和 1,那么我们确实必须使用 exitSetShouldExit(但请参阅下面的备注)。

让我们看一下脚本。

测试1.ps1

'before2'
.\test2
'after2'

'before3'
.\test3
'after3'

'before4'
.\test4
'after4'

测试2.ps1

'inner before 2'
exit 2
'inner after 2'

test3.ps1

'inner before 3'
$host.SetShouldExit(3)
'inner after 3'

测试4.ps1

throw 'Oops'

test1.ps1 的输出:

before2
inner before 2
after2
before3
inner before 3
inner after 3
after3
before4
Oops
At ...
+ throw <<<< 'Oops'

在此测试场景中,test4.ps1 可以工作,而 test2.ps1 和 test3.ps1 不能工作(如果工作意味着失败并立即退出 session )。

输出显示 exit 终止了当前脚本,而 SetShouldExit 没有。

由于 $host.SetShouldExit(3)powershell.exe .\test1 的退出代码为 3。我试图禁用该行以检查 exit 2 是否使退出代码为 2。不,它没有,由于 test4 失败,退出代码为 1。

我注意到另一个不同之处。如果我从交互式 PowerShell 控制台调用脚本,脚本中的 $host.SetShouldExit 会使控制台在调用后关闭。 exit 没有。

一个念头。 $host.SetShouldExit 的行为可能取决于主机的实现。例如,在其中一个我自己的主机导出根本不被支持(不允许像那样关闭主机应用程序)并且我的 SetShouldExit 实现基本上什么都不做。

关于powershell - 在自动构建过程中使用脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4459556/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com