web-dev-qa-db-ja.com

SCCMを取得して、Powershellスクリプト完了からの戻りコードを認識する方法は?

SCCM 2012アプリケーション展開を使用してソフトウェアをインストールしています。特定のインストールタイプは、SCCM exe検証エラーのために失敗し続けます。 powershellは、SCCMによって実行された場合でもソフトウェアを正常にインストールします。

問題は、SCCMはスクリプトからの完了から0が返されることだけを確認することです。私はwrite-Hostreturnwrite-output、アプリの実行ログが0の戻りをキャプチャしているため、SCCMによって読み取られるようには見えません。

SCCMがそれらを解釈できるように、Powershellから戻りコードをどのように出力しますか?

9
Colyn1337

SCCMでpowershellインストールスクリプトを使用するときに明らかになる可能性があるpowershell終了コード(この回答の最後を参照)には既知の問題があります。この問題を回避するには、次の2つの方法をとります。

  1. 私は常にSCCM _powershell.exe_を明示的に呼び出すことにより、PowerShellスクリプトを実行するバッチファイルを呼び出します。
  2. インストールスクリプトのすべてのコードパスが[System.Environment]::Exit()の明示的な呼び出しで終了することを確認します。

これらの2つの対策により、終了コードに関連する問題は発生していません。 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
alx9r