SCCM 2012アプリケーション展開を使用してソフトウェアをインストールしています。特定のインストールタイプは、SCCM exe検証エラーのために失敗し続けます。 powershellは、SCCMによって実行された場合でもソフトウェアを正常にインストールします。
問題は、SCCMはスクリプトからの完了から0が返されることだけを確認することです。私はwrite-Host
、return
、write-output
、アプリの実行ログが0の戻りをキャプチャしているため、SCCMによって読み取られるようには見えません。
SCCMがそれらを解釈できるように、Powershellから戻りコードをどのように出力しますか?
SCCMでpowershellインストールスクリプトを使用するときに明らかになる可能性があるpowershell終了コード(この回答の最後を参照)には既知の問題があります。この問題を回避するには、次の2つの方法をとります。
powershell.exe
_を明示的に呼び出すことにより、PowerShellスクリプトを実行するバッチファイルを呼び出します。[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)
}
_
以下は、終了コードが信頼できないことを知る方法です。