共用方式為


搜尋、下載及安裝特定 更新

本主題中的腳本範例會示範如何使用 Windows Update 代理程式 (WUA) 來掃描、下載及安裝特定更新。 更新可由其標題指定。

此範例會搜尋特定軟體更新、下載更新,然後安裝更新。 例如,使用者可以使用此方法來判斷計算機上是否已安裝重大安全性更新。 如果未安裝更新,用戶可以確定已下載並安裝更新。 使用者也可以確保他們會收到安裝狀態的通知。

範例更新是由 IUpdate 的 Title 屬性中的更新標題所識別。 此範例中建議的更新標題為「Windows Rights Management 用戶端 1.0 的更新」。

注意

如需如何搜尋、下載及安裝套用至特定應用程式之所有更新的資訊,請參閱搜尋、下載和安裝 更新

 

在您嘗試執行此範例之前,請注意下列事項:

  • WUA 必須安裝在電腦上。 如需如何判斷所安裝 WUA 版本的詳細資訊,請參閱 判斷目前版本的 WUA
  • 此範例不提供自己的使用者介面。 如果更新需要重新啟動,WUA 會提示使用者重新啟動電腦。
  • 此範例只能從 WUA 下載更新。 它無法從軟體更新服務 (SUS) 1.0 伺服器下載更新。
  • 執行此範例需要 Windows 腳本主機 (WSH)。 如需WSH的詳細資訊,請參閱平台軟體開發工具包 (SDK) 的 WSH 一節。 如果範例複製到名為 WUA_SpecificUpdate.vbs 的檔案,您可以開啟命令提示字元視窗,然後輸入下列命令來執行 :cscript WUA_SpecificUpdate.vbs

注意

執行掃描時,您可能會遇到高於一般記憶體使用量的體驗。 建議您對系統進行必要的調整,為掃描程式配置足夠的記憶體資源。 這可能包括設定其他處理器和修改頁面檔。 確保適當的記憶體配置有助於有效率且有效地完成掃描。

範例

重要

此腳本旨在示範如何使用 Windows Update 代理程式 API,並提供開發人員如何使用這些 API 解決問題的範例。 此腳本的目的不是生產程序代碼,而且 Microsoft 不支援腳本本身(雖然支援基礎 Windows Update 代理程式 API)。

 

Set updateSession = CreateObject("Microsoft.Update.Session")
updateSession.ClientApplicationID = "Sample Script"

'Get update title to search for
WScript.Echo "Enter the title of the update: " & _
"(for example, Update for Windows Rights Management client 1.0)"
updateTitle = WScript.StdIn.Readline

WScript.Echo vbCRLF & "Searching for: " & updateTitle & "..."

Set updateSearcher = updateSession.CreateupdateSearcher()

'Search for all software updates, already installed and not installed
Set searchResult = _
updateSearcher.Search("Type='Software'")

Set updateToInstall = CreateObject("Microsoft.Update.UpdateColl")

updateIsApplicable = False

'Cycle through search results to look for the update title
For i = 0 To searchResult.Updates.Count-1
   Set update = searchResult.Updates.Item(i)
   If UCase(update.Title) = UCase(updateTitle) Then
   'Update in list of applicable updates 
   'Determine if it is already installed or not
      If update.IsInstalled = False Then
         WScript.Echo vbCRLF & _
         "Result: Update applicable, not installed."
         updateIsApplicable = True
         updateToInstall.Add(update)
      Else 
         'Update is installed so notify user and quit
         WScript.Echo vbCRLF & _
         "Result: Update applicable, already installed."
         updateIsApplicable = True
         WScript.Quit 
      End If
   End If 
Next

If updateIsApplicable = False Then
   WScript.Echo "Result: Update is not applicable to this machine."
   WScript.Quit
End If

WScript.Echo vbCRLF & "Would you like to install now? (Y/N)"
stdInput = WScript.StdIn.Readline
 
If (strInput = "N" or strInput = "n") Then 
   WScript.Quit
ElseIf  (stdInput = "Y" OR stdInput = "y") Then
   'Download update
   Set downloader = updateSession.CreateUpdateDownloader() 
   downloader.Updates = updateToInstall
   WScript.Echo vbCRLF & "Downloading..."
   Set downloadResult = downloader.Download()
   WScript.Echo "Download Result: " & downloadResult.ResultCode
  
   'Install Update
   Set installer = updateSession.CreateUpdateInstaller()
   WScript.Echo vbCRLF & "Installing..."
   installer.Updates = updateToInstall
   Set installationResult = installer.Install()
  
   'Output the result of the installation
   WScript.Echo "Installation Result: " & _
   installationResult.ResultCode
   WScript.Echo "Reboot Required: " & _
   installationResult.RebootRequired 
End If