Compartir a través de


Buscar, descargar e instalar actualizaciones específicas

En el ejemplo de scripting de este tema se muestra cómo usar el Agente de Windows Update (WUA) para examinar, descargar e instalar una actualización específica. La actualización se puede especificar mediante su título.

El ejemplo busca una actualización de software específica, descarga la actualización y, a continuación, la instala. Por ejemplo, un usuario puede usar este método para determinar si se instala una actualización de seguridad crítica en un equipo. Si no se instala la actualización, el usuario puede asegurarse de que se descargue e instale. El usuario también puede asegurarse de que se le notifique el estado de la instalación.

La actualización de ejemplo se identifica mediante el título de la actualización en Propiedad Title de IUpdate. El título de la actualización que se sugiere en este ejemplo es "Update for Windows Rights Management client 1.0".

Nota:

Para obtener información sobre cómo buscar, descargar e instalar todas las actualizaciones que se aplican a una aplicación específica, se puede consultar Búsqueda, descarga e instalación de actualizaciones.

 

Antes de intentar ejecutar este ejemplo, debe tenerse en cuenta lo siguiente:

  • WUA debe haberse instalado en el equipo local. Para obtener más información sobre cómo determinar la versión de WUA instalada, se puede consultar Determinar la versión actual de WUA.
  • El ejemplo no proporciona su propia interfaz de usuario. WUA solicita al usuario que reinicie el equipo si una actualización requiere un reinicio.
  • El ejemplo solo puede descargar actualizaciones de WUA. No puede descargar actualizaciones de un servidor de Servicios de actualización de software (SUS) 1.0.
  • La ejecución de este ejemplo requiere Windows Script Host (WSH). Para obtener más información sobre WSH, se puede consultar la sección WSH del Kit de desarrollo de software de plataforma (SDK). Si el ejemplo se copia en un archivo denominado WUA_SpecificUpdate.vbs, se puede ejecutar abriendo una ventana del símbolo del sistema y escribiendo este comando: cscript WUA_SpecificUpdate.vbs

Nota:

Al realizar exámenes, se puede experimentar un uso de memoria superior al normal. Se recomienda realizar ajustes necesarios en el sistema para asignar recursos de memoria suficientes para el proceso de examen. Esto puede incluir la configuración de procesadores adicionales y la modificación del archivo de paginación. Garantizar una asignación de memoria adecuada permitirá completar el examen de forma eficiente y eficaz.

Ejemplo

Importante

Este script está diseñado para demostrar el uso de las API del Agente de Windows Update y proporcionar un ejemplo de cómo los desarrolladores pueden usar estas API para resolver problemas. Este script no está diseñado como código de producción y Microsoft no lo admite (aunque se admiten las API subyacentes del Agente de 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