web-dev-qa-db-ja.com

SCCM)でPowershellを使用した検出方法の問題

検出コードに問題があり、バグに傾倒しています。

検出コード出力

これが私のスクリプトです:

exit 0

または

[System.Environment]::Exit(0)

これにより、stdoutとstderrが空の終了コード「0」が返されます。 SCCMは、そのアプリケーションを「インストールされていません」と表示します。「インストール済み」と表示します。もちろん、実際のスクリプトは長くなりますが、これを使用してテストしているため、正しい結果が得られません。応答。

私の考えは後ろ向きですか?検出方法としてPowerShellを使用することについて説明しているリンク、記事、ブログを複数見つけましたが、機能していません。

ヒントやアイデアはありますか?ありがとう、

3
Cusp

スクリプトの終了コードはSCCMではサポートされていません。

SCCM chart

グラフでわかるように、終了コードがゼロ以外の値である場合は常に、アプリの検出状態は「不明」です。

STDOUTとSTDERRの2つの出力に焦点を合わせる必要があります。コンソールに書き込むときはいつでもSTDOUTに書き込むので、単純なWrite-Host "Installed"が機能します。エラー後もスクリプトを続行する場合は、Write-Error "Failed"を使用してSTDERRに書き込みます。または、スクリプトを完全に続行する場合は、単純なTHROWを使用できます。

これも見つけるために私を永遠に連れて行った。楽しい!

(クレジット https://david-obrien.net/2013/12/configmgr-powershell-application-detection-methods/ 情報)

1
Alex