我正在使用 SCCM 2012 应用程序部署来安装软件。特定的安装类型是脚本安装程序,因为 SCCM 一直因 exe 验证错误而失败。该脚本是 powershell,即使由 SCCM 执行,也能成功安装软件。
问题是 SCCM 仅从脚本的完成中看到返回 0。我试过write-host
, return
, write-output
, 和只是一个带有软重启代码的行项目。SCCM 似乎没有读取它们,因为应用程序执行日志捕获返回 0。
如何从 powershell 输出返回码以便 SCCM 可以解释它们?
将 powershell 安装脚本与 SCCM 一起使用时,powershell 退出代码存在一个已知问题(请参阅此答案的末尾)。为了解决这个问题,我采取了两种措施:
powershell.exe
显式调用来运行 powershell 脚本。[System.Environment]::Exit()
.通过这两个措施,我没有遇到与退出代码相关的问题。这是一个巨大的胜利,因为对安装脚本的退出代码进行故障排除是一个缓慢的过程,因为您必须等待 SCCM 客户端为每次故障排除迭代调用您的脚本。
批处理文件和 powershell 脚本如下所示:
Install-Application.bat
Install-Application.ps1
为什么 SCCM 直接调用 powershell 脚本时退出代码不可靠?
以下是我们如何知道退出代码不可靠的方法: