BITSが導入されておらずSCCMクライアントインストールが失敗する(Failed to query BITS 2.5 interface with error 0x80004002)

SCCMクライアントのプッシュインストールが失敗するケースの1つにBITSが入っていないというものがあります。 この場合ccmsetupのログに以下のように記録されます。

Failed to query BITS 2.5 interface with error 0x80004002     ccmsetup     2013/11/12 10:30:17     4660 (0x1234)
This operating system does not contain the correct version of BITS. BITS 2.5 or later is required.     ccmsetup     2013/11/12 10:30:17     4660 (0x1234)
A Fallback Status Point has not been specified.  Message with STATEID=’321′ will not be sent.     ccmsetup     2013/11/12 10:30:17     4660 (0x1234)
CcmSetup failed with error code 0x80004002     ccmsetup     2013/11/12 10:30:17     5764 (0x1684)

SCCMではファイル転送にBITSを使いますので、SCCMクライアントインストールの前提条件としてBITS2.5が入っている必要があります。

このことは以下のtechnet記事にも書いてあります。

Most operating systems include BITS, but if they do not (for example, Windows Server 2003 R2 SP2), you must install BITS before you install the System Center 2012 Configuration Manager client.

sccmでクライアント管理をしたいのに、そのための前提条件として多くのクライントに事前にアプリケーションを配布しなくちゃいけないというのはちょっと厳しいですね・・・。

そこで、これを楽に行うための仕組みをすごく簡単に作ってみました。作戦は共有フォルダにBITSのインストーラーをおいておき、そこを使ってサイレントインストール~再起動をバッチで実行させてしまおうというものです。リモートでキックさせるのにはpsexecを使います。

まず、Windows Server 2003用BITS2.5のインストーラーのダウンロード。

ダウンロードしてみるとexeでした。msiじゃないんですね・・・。

/?でコマンドラインを確認してみます。

Image(1)

ふむふむ。再起動の制御オプションがあるので、バッチファイルを作るまでもなく、共有フォルダ上のこのexeを直接叩かせてしまって良さそうです。30秒警告画面を出して、再起動させるようにしちゃいます。

本当はちゃんんとエラー処理とか必要だと思いますが、手抜き実装としては以下で十分ですね。

\\server\share\WindowsServer2003-KB923845-x86-JPN.exe /warnrestart /log:c:\temp\bits_install.log

psexecで叩くには以下のようになります。

psexec \\対象コンピューター –u domain\administrator -p password \\server\share\WindowsServer2003-KB923845-x86-JPN.exe /passive /warnrestart /log:c:\temp\bits_install.log

対象サーバーが少なければコピペしてしまってもいいと思いますし、多ければ@fileオプションを使って対象サーバーに実行させると良いと思います。

あとは、これを実行するなり、バッチファイルに書いてタスクスケジューラーで希望の時間にスケジュール実行させるなり行うと幸せになれるはずです。

Image(2)

コメントを残す

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