发送退出代码而不退出脚本

时间:2019-05-17 19:09:52

标签: powershell

假设我有2台服务器。可以说我正在这两个服务器上依次执行一个操作(用于循环),并在以下三种情况下传递了退出代码:

2 servers success: exit 0
2 servers fail: exit 1
1 server fail 1 server success: exit 0

目前,我使用此exit 1将退出代码返回到AutoSys(我们有自动化的作业),以指示失败(如果失败),并使用exit 0指示成功。

但是,这也会退出脚本,所以无论我在哪里使用此命令,脚本都将停止执行。

这在我当前使用的3个方案中很好,但是,我们想将最后一个方案1 server fail 1 server success: exit 0更改为1 server fail 1 server success: exit 1,如果其中一台服务器发生故障,即使另一台服务器成功,则发送失败代码。

如果第一个服务器成功而第二个服务器失败,这通常可以正常工作,因为无论如何这都是脚本的结尾,因此可以退出。但是如果FIRST服务器发生故障,但又有另一台服务器在其上运行该操作,则它将退出而不会让该操作在server2上运行。

所以我需要一种退出1(失败)而又不结束脚本操作的方法

1 个答案:

答案 0 :(得分:1)

我在.bat文件中做类似的事情。您可以通过出口号判断哪个作业出错。就像在整数中设置位。

$err = 0

# 1st job
if (-not $?) { $err = $err + 1 }

# 2nd job
if (-not $?) { $err = $err + 2 }

# 3rd job
if (-not $?) { $err = $err + 4 }

exit $err

也许您可以用$ error做些事情,但是它包含在Powershell进程中运行的所有脚本的错误。