Как заставить SCCM распознавать коды возврата от завершения сценария Powershell?

Я использую развертывание приложения 2012 года SCCM для установки программного обеспечения. Определенный тип установки является заданным сценарием установщиком, поскольку SCCM продолжал перестать работать для exe ошибок проверки. Сценарий является powershell и успешно устанавливает программное обеспечение, даже когда выполняется SCCM.

Проблема состоит в том, что SCCM только видит возврат 0 от завершения из сценария. Я попробовал write-host, return, write-output, и просто позиция с кодом для "мягкой" перезагрузки. Ни один из них, кажется, не читается SCCM, поскольку журнал выполнения приложений получает возврат 0.

Как Вы производите коды возврата от powershell так, чтобы SCCM мог интерпретировать их?

9
задан 25 August 2015 в 23:56
1 ответ

Существует известная проблема с кодами выхода PowerShell (см. конец этого ответа), которая может проявляться при использовании сценариев установки PowerShell с SCCM. Чтобы решить эту проблему, я принимаю две меры:

  1. Я всегда использую SCCM для вызова командного файла, который запускает сценарий powershell, явно вызывая powershell.exe .
  2. Я гарантирую, что каждый путь кода в сценарии установки оканчивается явным вызовом [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)
}

Почему коды выхода ненадежны, когда SCCM напрямую вызывает сценарии PowerShell?

Вот откуда мы узнаем, что коды выхода ненадежны:

9
ответ дан 2 December 2019 в 22:32

Теги

Похожие вопросы