假设我有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(失败)而又不结束脚本操作的方法
答案 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进程中运行的所有脚本的错误。