Udostępnij za pośrednictwem


Wyszukiwanie, pobieranie i instalowanie określonych aktualizacji

W przykładzie skryptów w tym temacie pokazano, jak używać agenta usługi Windows Update (WUA) do skanowania, pobierania i instalowania określonej aktualizacji. Aktualizacja może być określona przez jego tytuł.

Przykład wyszukuje określoną aktualizację oprogramowania, pobiera aktualizację, a następnie instaluje aktualizację. Na przykład użytkownik może użyć tej metody, aby określić, czy na komputerze jest zainstalowana krytyczna aktualizacja zabezpieczeń. Jeśli aktualizacja nie jest zainstalowana, użytkownik może upewnić się, że aktualizacja została pobrana i zainstalowana. Użytkownik może również upewnić się, że jest powiadamiany o stanie instalacji.

Przykładowa aktualizacja jest identyfikowana przez tytuł aktualizacji w Title Property of IUpdate. Tytuł aktualizacji sugerowanej w tym przykładzie to "Aktualizacja klienta usługi Windows Rights Management 1.0".

Notatka

Aby uzyskać informacje na temat wyszukiwania, pobierania i instalowania wszystkich aktualizacji dotyczących określonej aplikacji, zobacz Wyszukiwanie, Pobieranie i Instalowanie aktualizacji.

 

Przed podjęciem próby uruchomienia tego przykładu zwróć uwagę na następujące kwestie:

  • Na komputerze musi być zainstalowana usługa WUA. Aby uzyskać więcej informacji na temat sposobu określania zainstalowanej wersji usługi WUA, zobacz Określanie bieżącej wersji usługi WUA.
  • Przykład nie udostępnia własnego interfejsu użytkownika. Usługa WUA monituje użytkownika o ponowne uruchomienie komputera, jeśli aktualizacja wymaga ponownego uruchomienia.
  • Przykład może pobierać aktualizacje tylko z Windows Update Agent (WUA). Nie można pobrać aktualizacji z serwera Software Update Services (SUS) 1.0.
  • Uruchomienie tego przykładu wymaga Windows Script Host (WSH). Aby uzyskać więcej informacji na temat protokołu WSH, zobacz sekcję WSH zestawu Sdk (Platform Software Development Kit). Jeśli przykład jest kopiowany do pliku o nazwie WUA_SpecificUpdate.vbs, możesz go uruchomić, otwierając okno wiersza polecenia i wpisując następujące polecenie: cscript WUA_SpecificUpdate.vbs

Notatka

Podczas przeprowadzania skanowania może wystąpić wyższe niż normalne użycie pamięci. Zaleca się wprowadzenie niezbędnych zmian w systemie w celu przydzielenia wystarczającej ilości zasobów pamięci na potrzeby procesu skanowania. Może to obejmować konfigurowanie dodatkowych procesorów i modyfikowanie pliku stronicowania. Zapewnienie odpowiedniej alokacji pamięci pomoże w wydajnym i efektywnym zakończeniu skanowania.

Przykład

Ważny

Ten skrypt ma na celu zademonstrowanie korzystania z interfejsów API agenta usługi Windows Update i przedstawienie przykładu sposobu, w jaki deweloperzy mogą używać tych interfejsów API do rozwiązywania problemów. Ten skrypt nie jest przeznaczony jako kod produkcyjny, a sam skrypt nie jest obsługiwany przez firmę Microsoft (choć obsługiwane są podstawowe interfejsy API agenta usługi Windows Update).

 

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