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は未テストですが、おそらくうまく動作すると思います。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です