我正在使用SCCM 2012应用程序部署来安装软件。 特定的安装types是脚本安装程序,因为SCCM不能正常执行exevalidation错误。 该脚本是powershell,并成功安装该软件,即使由SCCM执行。
问题是SCCM只能看到脚本完成时返回0。 我已经尝试了write-host , return , write-output ,只是一个与软重启代码的行项目。 由于应用程序执行日志捕获返回值为0,SCCM似乎没有人读取它们。
你如何从PowerShell输出返回代码,以便SCCM可以解释它们?
PowerShell退出代码存在一个已知问题(请参阅本答复的结尾),这些问题可能会在使用SCCM使用PowerShell安装脚本时出现。 为了解决这个问题,我采取了两个措施:
powershell.exe调用一个运行powershell脚本的batch file。 [System.Environment]::Exit()的显式调用结束。 有了这两个措施,我还没有遇到与退出代码有关的问题。 这是一个巨大的胜利,因为解决安装脚本的退出代码是一个缓慢的过程,因为您必须等待SCCM客户端为每次故障排除调用脚本。
以下是batch file和PowerShell脚本的样子:
Install-Application.bat powershell.exe .\Install-Application.ps1 exit /b %errorlevel%
Install-Application.ps1 try { # do a bunch of installation stuff if ( $rebootNeeded ) { [System.Environment]::Exit(3010) } [System.Environment]::Exit(0) } catch { [System.Environment]::Exit(1) }
以下是我们如何知道退出代码不可靠: