Я использую развертывание приложения 2012 года SCCM для установки программного обеспечения. Определенный тип установки является заданным сценарием установщиком, поскольку SCCM продолжал перестать работать для exe ошибок проверки. Сценарий является powershell и успешно устанавливает программное обеспечение, даже когда выполняется SCCM.
Проблема состоит в том, что SCCM только видит возврат 0 от завершения из сценария. Я попробовал write-host
, return
, write-output
, и просто позиция с кодом для "мягкой" перезагрузки. Ни один из них, кажется, не читается SCCM, поскольку журнал выполнения приложений получает возврат 0.
Как Вы производите коды возврата от powershell так, чтобы SCCM мог интерпретировать их?
Существует известная проблема с кодами выхода PowerShell (см. конец этого ответа), которая может проявляться при использовании сценариев установки PowerShell с SCCM. Чтобы решить эту проблему, я принимаю две меры:
powershell.exe
. [System.Environment] :: Exit ()
. С этими двумя мерами у меня не было проблема, связанная с кодами выхода. Это огромная победа, потому что устранение неполадок с кодами выхода из сценариев установки - медленный процесс, поскольку вам нужно ждать, пока клиент SCCM вызовет ваш сценарий для каждой итерации устранения неполадок.
Вот как выглядят командный файл и сценарий 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)
}
Вот откуда мы узнаем, что коды выхода ненадежны: