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