Partager via


Recherche, téléchargement et installation de mises à jour spécifiques

L'exemple de script de ce sujet vous indique comment utiliser l'agent Windows Update (WUA) pour analyser, télécharger et installer une mise à jour spécifique. La mise à jour peut être spécifiée par son titre.

L'exemple recherche une mise à jour de logiciel spécifique, télécharge la mise à jour, puis l'installe. Par exemple, un utilisateur peut utiliser cette méthode pour déterminer si un correctif de sécurité critique est installé sur un ordinateur. Si la mise à jour n'est pas installée, l'utilisateur peut alors veiller au téléchargement et à l'installation de la mise à jour. L'utilisateur peut également veiller à être informé de l'état de l'installation.

L'exemple de mise à jour est identifié par le titre de mise à jour dans Title Property of IUpdate. Le titre de la mise à jour suggérée dans cet exemple est « Update for Windows Rights Management client 1.0. »

Remarque

Pour plus d'informations sur la recherche, le téléchargement et l'installation de toutes les mises à jour correspondant à une application spécifique, consultez recherche, téléchargement et installation de mises à jour.

 

Avant d'essayer d'exécuter cet exemple, notez les points suivants :

  • WUA doit être installé sur l'ordinateur. Pour plus d'informations sur la façon de déterminer la version de WUA installée, consultez Détermination de la version actuelle de WUA.
  • L'exemple ne fournit pas son propre interface utilisateur. WUA invite l'utilisateur à redémarrer l'ordinateur si une mise à jour nécessite un redémarrage.
  • L'exemple ne peut télécharger que les mises à jour à partir de WUA. Il ne peut pas télécharger les mises à jour à partir d'un serveur SUS (Software Update Services) 1.0.
  • L'exécution de cet exemple nécessite l'environnement d'exécution de scripts WSH (Windows Script Host). Pour plus d'informations sur WSH, consultez la section WSH du kit de développement logiciel (SDK). Si l'exemple est copié dans un fichier nommé WUA_SpecificUpdate.vbs, vous pouvez l'exécuter en ouvrant une fenêtre d'invite de commandes et en tapant cette commande : cscript WUA_SpecificUpdate.vbs

Remarque

Lorsque vous effectuez des analyses, vous pouvez constater une utilisation de la mémoire supérieure à la normale. Il est recommandé de procéder aux ajustements nécessaires sur votre système afin d’allouer suffisamment de ressources mémoire pour le processus d’analyse. Cela peut inclure la configuration de processeurs supplémentaires et la modification du fichier d’échange. L’allocation d’une quantité de mémoire suffisante permettra d’effectuer l’analyse de manière efficace et efficiente.

Exemple

Important

Ce script est destiné à illustrer l'utilisation des API de l'agent Windows Update, et fournit un exemple de la façon dont les développeurs peuvent utiliser ces API pour résoudre les problèmes. Ce script n'est pas destiné à être du code de production, et n'est pas pris en charge par Microsoft (bien que les API de l'agent Windows Update sous-jacentes soient prises en charge).

 

Set updateSession = CreateObject("Microsoft.Update.Session")
updateSession.ClientApplicationID = "MSDN 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