Windowsに強制的にアップデートのチェックをさせるには?
Windowsを新規にインストールした後 - XPまたは7 - Windowsのアップデートを「強制的に」行うにはどうすればいいですか?
1週間後に “古い "Windowsのアップデートがあるのは嫌なので、"1ステップ "でできるのでしょうか? Windowsに強制的にアップデートをチェックさせ、もしあればインストールする「魔法の」コマンドはありますか?
Windowsを新規にインストールした後 - XPまたは7 - Windowsのアップデートを「強制的に」行うにはどうすればいいですか?
1週間後に “古い "Windowsのアップデートがあるのは嫌なので、"1ステップ "でできるのでしょうか? Windowsに強制的にアップデートをチェックさせ、もしあればインストールする「魔法の」コマンドはありますか?
Windows Updateを使用する通常の方法の他に、コマンドラインから強制的にチェックを行うことができます。
管理者コマンドプロンプトを開いて実行します。
C:\> %windir%\system32\wuauclt.exe /detectnow
Wuauclt.exeはWindows UpdateのAutoUpdate Clientであり、Microsoft Updateから利用可能なアップデート(MS Windowsプラットフォームの様々なバージョン)をチェックするために使用されます。
これでは強制的にインストールされません。
スクリプトを使って自動的にアップデートをチェックしてインストールすることができます。これはXPでもWindows 7でも動作します。
ダウンロード可能なスクリプトがいくつかあります。
' Written in 2007 by Harry Johnston, University of Waikato, New Zealand.
' This code has been placed in the public domain. It may be freely
' used, modified, and distributed. However it is provided with no
' warranty, either express or implied.
'
' Exit Codes:
' 0 = scripting failure
' 1 = error obtaining or installing updates
' 2 = installation successful, no further updates to install
' 3 = reboot needed; rerun script after reboot
'
' Note that exit code 0 has to indicate failure because that is what
' is returned if a scripting error is raised.
'
Set updateSession = CreateObject("Microsoft.Update.Session")
Set updateSearcher = updateSession.CreateUpdateSearcher()
Set updateDownloader = updateSession.CreateUpdateDownloader()
Set updateInstaller = updateSession.CreateUpdateInstaller()
Do
WScript.Echo
WScript.Echo "Searching for approved updates ..."
WScript.Echo
Set updateSearch = updateSearcher.Search("IsInstalled=0")
If updateSearch.ResultCode <> 2 Then
WScript.Echo "Search failed with result code", updateSearch.ResultCode
WScript.Quit 1
End If
If updateSearch.Updates.Count = 0 Then
WScript.Echo "There are no updates to install."
WScript.Quit 2
End If
Set updateList = updateSearch.Updates
For I = 0 to updateSearch.Updates.Count - 1
Set update = updateList.Item(I)
WScript.Echo "Update found:", update.Title
Next
WScript.Echo
updateDownloader.Updates = updateList
updateDownloader.Priority = 3
Set downloadResult = updateDownloader.Download()
If downloadResult.ResultCode <> 2 Then
WScript.Echo "Download failed with result code", downloadResult.ResultCode
WScript.Echo
WScript.Quit 1
End If
WScript.Echo "Download complete. Installing updates ..."
WScript.Echo
updateInstaller.Updates = updateList
Set installationResult = updateInstaller.Install()
If installationResult.ResultCode <> 2 Then
WScript.Echo "Installation failed with result code", installationResult.ResultCode
For I = 0 to updateList.Count - 1
Set updateInstallationResult = installationResult.GetUpdateResult(I)
WScript.Echo "Result for " & updateList.Item(I).Title & " is " & installationResult.GetUpdateResult(I).ResultCode
Next
WScript.Quit 1
End If
If installationResult.RebootRequired Then
WScript.Echo "The system must be rebooted to complete installation."
WScript.Quit 3
End If
WScript.Echo "Installation complete."
Loop
コマンドラインから以下のように実行します。
cscript wsusupdate.vbs
私のスクリプトは最低限の機能しかありませんが、まだ使えるかもしれません。このようなスクリプトは他にもたくさんの追加機能を持ったものがありますので、Googleで検索してみてください。
更新プログラムを強制的に再スキャンするもう一つの方法は、%windir%Windows\SoftwareDistribution\Download に保存されているすべての更新プログラムを削除して、スレートを一掃することです。
NET STOP wuauserv
RD /S /Q %windir%\SoftwareDistribution\Download
NET START wuauserv
に保存されている更新プログラムを全て削除して、Windows Updateで「更新プログラムのチェック」をします。システムボリューム上の更新可能なファイルを全てチェックするので、1時間はかかるかもしれません(その後の「更新のチェック」は早いです)。この方法では、エラーや不完全な更新を排除し、少なくともMSが見ている限りでは、クリーンで最新のシステムが得られます。
Windows 7 のフレッシュインストールの一環として IE をアップグレードした場合や、まだ IE を起動していなくて入門の質問に答えていない場合、Windows Update でエラーが出ることがわかりました。また、GUIを介さずにWindows UpdateをMicrosoft Updateに切り替える方法を見つけられなかったので、手動でIEを起動して初期化し、GUIを介してWindows Updateを設定することで、Microsoft Updateに切り替えることができ、最初のエラーを回避することができます。あなたのマイレージは異なるかもしれません。