一昨日が2007年最初の月例パッチの日だったということで、私も某所で SMS 2003 (ITMU Revision 3) を使った導入に勤しんでおりました。
が、どうも今月は SMS の気分が乗らないらしく、結構な頻度でインストール失敗のログが…
原因は 「Automatic Updates や BITS といった必要なサービスが停止してしまっていた」「モジュールのダウンロードが中途半端な状態で行われて、キャッシュにその情報が残ってしまった」「クライアント上のスキャンプログラムが適切に動いていない」といった、いずれも ITMU ではよく見るものばかりだったのですが、なぜか今回は結構な頻度。
ここの環境はそもそも、いつの間にかポリシーやネットワーク構成が変更されていたり、各クライアントで好き勝手にシステムがいじられたりするようなところなので、最初から成功率100%ということは想定していないのですが、それに加えて12月に ITMU のバージョンを Revision 3 に上げたことも何らかの原因になっているのかもしれません。
こういった場合ですが、「エラーが発生した端末の必要サービスを起動する」「キャッシュを削除する」といった基本的な回避策をとれば、大抵すぐに直ります。
とはいえそういった作業をマニュアルでやっていては何のために SMS を入れているのか分からなくなりますので、バッチ化して SMS や(それが難しい場合は)ログオンスクリプト等で配布すれば効率的です。
その実際に使えるバッチですが、下記で良い感じのモノが紹介されていました。
【ITMU Updates Fail when Scan Tool fails to Run】
http://myitforum.com/cs2/blogs/btucker/archive/2005/11/08/16757.aspx
上記バッチを流せば、ITMU 関連の大抵の“よくあるエラー”は解消されます。
SMS で配信する場合は、パッケージ(プログラム)のプロパティで [非表示 (hidden)] と [プログラムの通知を抑制する (Suppress program notifications) ] の2つを指定しておけば、ユーザーに意識させることがなくなるため better です。
---
なお基本的には上記バッチで十分ですが、障害ケースによってはそもそも "regsvr32 wuaueng.dll /s " などのDLL登録の部分で失敗してしまう場合があります。
そのため、単純に登録するのではなく、いったん regsvr32 /u を使ってコンポーネント解除しておけば、より確実です。
具体的にはこんな感じで。
cd %windir%\system32
regsvr32 /u wuapi.dll /s
regsvr32 /u wuaueng.dll /s
regsvr32 /u wuaueng1.dll /s
regsvr32 /u wucltui.dll /s
regsvr32 /u wups.dll /s
regsvr32 /u wups2.dll /s
regsvr32 /u wuweb.dll /s
regsvr32 wuapi.dll /s
regsvr32 wuaueng.dll /s
regsvr32 wuaueng1.dll /s
regsvr32 wucltui.dll /s
regsvr32 wups.dll /s
regsvr32 wups2.dll /s
regsvr32 wuweb.dll /s
net stop wuauserv
net stop bits
rmdir /S /Q %windir%\softwaredistribution
net start wuauserv
net start bits
exit /B 0