Cómo instalar actualizaciones de Windows desde la línea de comandos

17

¿Es posible instalar actualizaciones de Windows desde la línea de comandos? La herramienta de actualización gráfica no parece funcionar tan bien en Windows 7. A veces sí, a veces no ... Mi problema es que no puedo ver ninguna actualización cuando hago clic para ver la lista de detalles. Entonces, cuando hay actualizaciones que no están marcadas de forma predeterminada, no puedo instalarlas ...

Entonces, ¿hay alguna otra forma de instalarlos?

Svish
fuente

Respuestas:

12

No estoy seguro acerca de Windows 7, pero con XP / Vista, puede ejecutar el siguiente comando para detectar y descargar actualizaciones:

wuauclt /detectnow /reportnow

Si tiene problemas para que funcione, consulte el Wiki de WSUS .

De lo contrario, si tiene una actualización específica que desea, simplemente descárguela del sitio web de Microsoft. Si hay algún problema que le impida instalar, esa es la mejor manera de averiguarlo, ya que los registros de Windows Update son difíciles de manejar.

duffbeer703
fuente
1
Ya no creo que ese enlace sea válido.
Natalie Adams
No funciona para mí en Windows 8.1 o Windows Server 2012.
nu everest
El comando que ha dado buscará actualizaciones e informará el estado de la actualización al servidor WSUS. NO aprueba, descarga ni instala ninguna actualización. Debe agregar el parámetro / updatedtenow para forzar una instalación de actualizaciones disponibles.
duct_tape_coder
También es de destacar que en Win10 / 2016, el comando wuauclt está en desuso a favor de usoclient, consulte omgdebugging.com/2017/10/09/…
duct_tape_coder
4

Puede usar una secuencia de comandos para buscar, descargar e instalar actualizaciones sincrónicamente. A menudo uso una versión modificada de este vbscript para parchear manualmente los servidores Windows Core.

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

Set updateSearcher = updateSession.CreateUpdateSearcher()

WScript.Echo "Searching for updates..." & vbCRLF

Set searchResult = _
updateSearcher.Search("IsInstalled=0 and Type='Software' and IsHidden=0")

WScript.Echo "List of applicable items on the machine:"

For I = 0 To searchResult.Updates.Count-1
    Set update = searchResult.Updates.Item(I)
    WScript.Echo I + 1 & "> " & update.Title
Next

If searchResult.Updates.Count = 0 Then
    WScript.Echo "There are no applicable updates."
    WScript.Quit
End If

WScript.Echo vbCRLF & "Creating collection of updates to download:"

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

For I = 0 to searchResult.Updates.Count-1
    Set update = searchResult.Updates.Item(I)
    addThisUpdate = false
    If update.InstallationBehavior.CanRequestUserInput = true Then
        WScript.Echo I + 1 & "> skipping: " & update.Title & _
        " because it requires user input"
    Else
        If update.EulaAccepted = false Then
            WScript.Echo I + 1 & "> note: " & update.Title & _
            " has a license agreement that must be accepted:"
            WScript.Echo update.EulaText
            WScript.Echo "Do you accept this license agreement? (Y/N)"
            strInput = WScript.StdIn.Readline
            WScript.Echo 
            If (strInput = "Y" or strInput = "y") Then
                update.AcceptEula()
                addThisUpdate = true
            Else
                WScript.Echo I + 1 & "> skipping: " & update.Title & _
                " because the license agreement was declined"
            End If
        Else
            addThisUpdate = true
        End If
    End If
    If addThisUpdate = true Then
        WScript.Echo I + 1 & "> adding: " & update.Title 
        updatesToDownload.Add(update)
    End If
Next

If updatesToDownload.Count = 0 Then
    WScript.Echo "All applicable updates were skipped."
    WScript.Quit
End If

WScript.Echo vbCRLF & "Downloading updates..."

Set downloader = updateSession.CreateUpdateDownloader() 
downloader.Updates = updatesToDownload
downloader.Download()

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

rebootMayBeRequired = false

WScript.Echo vbCRLF & "Successfully downloaded updates:"

For I = 0 To searchResult.Updates.Count-1
    set update = searchResult.Updates.Item(I)
    If update.IsDownloaded = true Then
        WScript.Echo I + 1 & "> " & update.Title 
        updatesToInstall.Add(update) 
        If update.InstallationBehavior.RebootBehavior > 0 Then
            rebootMayBeRequired = true
        End If
    End If
Next

If updatesToInstall.Count = 0 Then
    WScript.Echo "No updates were successfully downloaded."
    WScript.Quit
End If

If rebootMayBeRequired = true Then
    WScript.Echo vbCRLF & "These updates may require a reboot."
End If

WScript.Echo  vbCRLF & "Would you like to install updates now? (Y/N)"
strInput = WScript.StdIn.Readline
WScript.Echo 

If (strInput = "Y" or strInput = "y") Then
    WScript.Echo "Installing updates..."
    Set installer = updateSession.CreateUpdateInstaller()
    installer.Updates = updatesToInstall
    Set installationResult = installer.Install()

    'Output results of install
    WScript.Echo "Installation Result: " & _
    installationResult.ResultCode 
    WScript.Echo "Reboot Required: " & _ 
    installationResult.RebootRequired & vbCRLF 
    WScript.Echo "Listing of updates installed " & _
    "and individual installation results:" 

    For I = 0 to updatesToInstall.Count - 1
        WScript.Echo I + 1 & "> " & _
        updatesToInstall.Item(i).Title & _
        ": " & installationResult.GetUpdateResult(i).ResultCode   
    Next
End If

Parece que funciona como un encanto para eso, pero no lo he probado en Windows 7, por supuesto. También hay un enlace a otro artículo para orientar una actualización específica si es necesario.

También hay un módulo Powershell que expone una experiencia similar.

Después de un vistazo rápido, también encontré esta aplicación de terceros que también usa la API de actualización, pero con algunas opciones más (aunque requiere que confíes en el código de terceros).

Oskar Duveborn
fuente
2

Actualización de Windows desde la línea de comandos:

www.sysadminsoftware.com/udc.html

La herramienta (Updates Deployment Commander) puede hacer exactamente lo que está pidiendo. También puede pasar parámetros para evitar ciertos parches, orientar actualizaciones específicas, reiniciar N minutos después de completar, crear informes en CSV, etc. Además, incluye un par de utilidades GUI.

sysadmin
fuente
2

Si tiene que parchear los sistemas operativos Windows, especialmente después de nuevas instalaciones, eche un vistazo serio al Actualizador sin conexión .

Utiliza scripts para descargar todos los parches que sugiera (por lo tanto, Win2000, Win XP, Win 2003, Vista, Win2008, Win2012 de 32 y 64 bits, según corresponda), varios idiomas, paquetes de servicios, marcos .NET y parches de Office (XP, 2000 , 2003, 2007).

Una vez que los haya descargado todos, simplemente actualice cada parche el martes y obtenga solo los cambios. Aunque sí consigue los catalouges y se hacen más largos cada día (muchos megas ahora por OS / Office rev).

Una vez que haya descargado los archivos en su máquina local, hay una secuencia de comandos para hacer imágenes de CD / DVD de ellos (esto automáticamente para imágenes de DVD por SO ahora si lo desea).

Lo que hago es usar una tarjeta de memoria SD de 4GB, en un lector de tarjetas SD que respeta la pestaña de protección contra escritura. Solía ​​usar tarjetas de 2GB, pero apenas puedo instalar Win XP y ahora la mayoría de las versiones de Office se basan en ellas, así que pasé a las tarjetas de 4GB.

Por lo tanto, cuando soluciono los problemas de una máquina, confío en insertar este dispositivo que antes se podía escribir en una máquina no confiable y posiblemente infectada por virus (dado que no sé nada al respecto, supongo que está infectado) sabiendo que mi dispositivo está protegido contra escritura.

Por lo tanto, puedo actualizarlo como primer paso.

Si usa la ejecución automática, o inicia el ejecutable en el dispositivo (clave, HD externo, CD, DVD, donde sea que lo haya escrito), se inicia un script que usa el servicio de actualización de Windows en la máquina local para aplicar todas las actualizaciones, pero en su lugar de pasar por el cable para descargarlos, solo usa la copia local.

Por lo tanto, aún puede llevar más de 1 hora actualizar una máquina WinXP a los últimos SP y parches, pero hay cero tráfico de red en el camino, y puede hacerlo con el cable Ethernet desconectado por completo.

Herramienta increíblemente útil!

No debería entrar en conflicto con Microsoft, como lo hicieron los chicos de AutoUpdate, que estaban preparando un CD de parche, que distribuía la imagen del CD. Esta herramienta actualiza los scripts, y debe obtener todos los parches en su estación de trabajo con Windows con licencia.

geoffc
fuente
1

Actualmente no puedo agregar un comentario a la respuesta de duffbeer703 , así que aquí como respuesta separada:

La última versión "buena" del enlace a WSUSwiki tal como está archivada en The Internet Archive es esta . Las opciones dadas en la respuesta original se describen en esta entrada de preguntas frecuentes .

Olaf Mandel
fuente
¿Eres consciente de lo que se necesita para ganar "un poco" de puntos de reputación para obtener el privilegio de comentar? Solo sugiera algunas ediciones (relevantes). si se aprueban, obtendrás +2 repeticiones por cada uno de ellos ... ¡pruébalo!
Pierre.Vriens
-2

No lo creo, Windows Update requiere un poco de ActiveX y otra integración con Internet Explorer para funcionar correctamente.

Dado que Windows 7 todavía no es un candidato de lanzamiento, debe esperar este tipo de errores.

Puede ser prudente enviar el error específico que tiene al equipo de desarrollo si es miembro de MSDN.

WerkkreW
fuente
si lo se. Ya he presentado un error en MSDN. Solo busco un método alternativo hasta que se arregle =)
Svish