Я использую развертывание приложения SCCM 2012 для установки программного обеспечения. Конкретный тип установки - это программа установки с использованием сценариев, поскольку SCCM продолжал работать с ошибками проверки exe. Скрипт powershell и успешно устанавливает программное обеспечение, даже если оно выполняется SCCM.
Проблема в том, что SCCM видит только возвращение 0 из завершения из сценария. Я пытался write-host
, return
, write-output
и только позиция с кодом для мягкой перезагрузки. Похоже, что ни один из них не читается SCCM, поскольку журнал выполнения приложения фиксирует возврат 0.
Как вы выводите коды возврата из powershell, чтобы SCCM мог их интерпретировать?
powershell
scripting
sccm
sccm-2012-r2
Colyn1337
источник
источник
exit 1
конца скрипта PowerShell?exit
являетсяcmd
встроенным. В других системах развертывания я видел, что файлы .ps1 работают сstart
илиcmd /c powershell.exe somefile.ps1
. Извините за спитболлинг без доступа к тесту SCCM.Ответы:
Существует известная проблема с кодами выхода powershell (см. Конец этого ответа), которая может проявиться при использовании сценариев установки powershell с SCCM. Чтобы обойти проблему, я принимаю две меры:
powershell.exe
явно.[System.Environment]::Exit()
.С этими двумя мерами у меня не было проблемы, связанной с кодами выхода. Это огромная победа, потому что устранение неполадок с кодами завершения сценариев установки является медленным процессом, поскольку вам приходится ждать, пока клиент SCCM вызовет ваш сценарий для каждой итерации устранения неполадок.
Вот как выглядит командный файл и скрипт powershell:
Install-Application.bat
Install-Application.ps1
Почему коды выхода ненадежны, когда SCCM напрямую вызывает сценарии powershell?
Вот как мы знаем, что коды выхода ненадежны:
источник