SCCM Clientがインストール済みかどうかを判定する方法
SCCM Clientがすでにインストール済みかどうかを判定する必要がありました。色々と方法が考えられます。 - インストールログ内の成功の時だけに出る文字列を探す - クライアントエージェントの実行ファイルの存在有無で判定する - レジストリ内にキーが存在するかどうかで判定する 他にも色々あると思います。 そんな中で今回は、クライアント上でサービスが存在しているかどうかを判定基準にすることにしました。具体的には以下のような感じです。 sc query CcmExec > nul if %errorlevel%==0 goto Installed :Not_Installed echo “SCCMクライアントはインストールされていません。” goto end :Installed echo “SCCMクライアントはインストールされています。” goto end :end 「CcmExec」というのがSCCM Clientのサービスの名前なのでその存在をscコマンドで確認しています。 2013/02/15追記 上記のロジックは、Windows7では正常に動作するのですが、WindowsXPでは正常に動作しないことがわかりました。Windows XPではsc query CcmExecが失敗してもerrorlevelとして0を返してくるからです。そこで以下のようにきちんとscコマンドの結果としてサービス名が表示されていることを判定するようにしました。これならWindows7, Xpの両方で動作します。その他OSは未テストですが、おそらくうまく動作すると思います。 [gist id=4958024]