SCCMによるIE11のデプロイ
さて、SCCMによるIE11のデプロイですが、いきなり問題があります。
必要な更新をインストール後、IE11のインストール後、IE11の更新のインストール後、それぞれの少なくとも3回、PCを再起動する必要があるのです。単純なパッケージを使用したバックグラウンドでのインストールではなく、再起動が行えるタイミングでユーザーにインストールを開始してもらう操作が必要になります。
このため、タスクシーケンスを利用します。
作成方法は下記のとおりです。
- 新しくタスクシーケンスを作成します。
- まず、IE11が既にインストールされているかどうか確認するステップです。
こちらのようなWMIクエリを条件に指定し、グループを作成します。この条件がFALSEの場合、IE11のインストールへ進みます。SELECT * FROM Win32_QuickFixEngineering WHERE HotFixID = "KB2841134"
- 32ビットか64ビットを判定し、グループを分けます。
- 前提となる更新をインストールします。
こちらのようなステップを作成していきます。
このとき、オプションで条件を指定しておくと、既にインストール済みの場合はスキップするため時間を短縮できます。
SELECT * FROM Win32_QuickFixEngineering WHERE HotFixID = "KB2533623"
- これは私の試行錯誤の結果ですが、/norestart で全て一気にインストールすると、正常にインストールできない場合があるらしく、再起動の回数が増えますが、KB2729094についてはインストール後一旦再起動しておいたほうがよさそうです。
このため、KB2729094については、別にグループを作成し、インストールした場合は一旦再起動するようにしました。
- いよいよIE11のインストールですが、このまえに下記のようなスクリプトを実行します。
On Error Resume Next
これにより、一度WMIクエリを実行しておき、結果をキャッシュさせ、IE11のインストーラ内でのWMIクエリの実行時間を短縮するのが狙いです。
strComputer = "."
SET objWMIService = GETOBJECT("winmgmts:\\" & strComputer & "\root\cimv2")
SET colItems = objWMIService.ExecQuery("Select HotFixID from Win32_QuickFixEngineering where HotFixID='KB2729094'")
FOR EACH objItem in colItems
Wscript.Echo objItem.HotFixID
NEXT
WSCRIPT.ECHO "DONE!"
WSCRIPT.QUIT - IE11をインストールします。
- 引き続き、IE11に必要な更新をインストールします。
ここで1点注意があります。
IE11でエンタープライズモードを使用するには KB2929437 が必要ですが、IE11がインストールされる前にこのアップデートを手動でインストールした場合や、IE11を一旦アンインストールしてしまった場合、IE11をインストール後再度インストールする必要があります。ところがこの状態でも、WMIクエリではインストール済みとして結果が返ってきてしまいます。
このため、当初はWMIクエリによりチェックして、インストールされていない場合だけ実行するようにしていたのですが、この条件をはずしIE11をインストール後無条件に実行するようにしています。
これで、IE11をインストールするひととおりのタスクシーケンスが出来ました。あとは、これを「利用可能」としてデプロイし、ユーザーに実行してもらうだけです。
もちろん、「必須」でデプロイしてバックグラウンドで実行しても構いません。