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