如何导致SCCM任务序列失败?

我正在使用SCCM 1607中的任务序列(又名SCCM 2016)安装一个相当复杂的软件。 在任务序列中,我有一个try / catch块,所以如果TS失败,我可以将计算机恢复到工作状态。

像这样:

模拟任务序列

这里的问题是,当任务序列中存在实际的故障时,error handling例程将执行其任务,任务序列将正常退出。 我正在捕捉自己的日志,以反映错误,但就SCCM而言,安装是成功的。 用户没有收到任何types的通知,并且软件中心中显示的应用程序显示为已安装,尽pipe不是。 我必须查看我自己的日志,以获得有关错误的任何报告,SCCM将永远不会自行重新尝试安装。

我如何强制任务序列失败作为我的error handling块的最后一步? 我希望用户看到一个错误,并致电帮助台。 我也希望能够看到在SCCM控制台中的失败,我想TS自己重试(旧版本无法卸载,如果它正在使用,几乎所有我在testing中看到的失败是因为用户在TS有机会删除它之前login并启动它)。

要导致任务序列失败,可以使用“运行命令行”任务序列步骤来执行返回非零1退出代码的命令。 例如:

cmd /c exit 1 

(当然,您还必须确保任务序列步骤的“继续出错”checkbox未被选中。)

事实上,如果你想使用不同的退出码来反映不同的失败原因,你可以用上面的数字代替上面的数字。 这将允许您确定哪些安装因特定原因而失败。

所有这一切被说,一个任务序列可能不是这个具体用例的最佳机制。 考虑使用Powershell应用程序部署工具包将该软件与应用程序(或软件包和程序)部署在一起。 它提供了许多有用的function,包括closures应用程序并阻止用户在安装完成之前重新启动它们的function。


1从技术上讲,退出代码必须是任务序列步骤的“选项”选项卡上“成功代码”字段中未列出的数字之一,缺省03010