it-swarm-es.com

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

¿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?

17
Svish

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 WSUS Wiki .

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, porque los registros de Windows Update son difíciles de manejar.

12
duffbeer703

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 n 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).

4
Oskar Duveborn

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.

2
sysadmin

Si tiene que parchear los sistemas operativos Windows, especialmente después de nuevas instalaciones, observe seriamente 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 será 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 encajar Win XP y la mayoría de Office se basa en eso ahora, 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), inicia una secuencia de comandos que usa el servicio Windows Update 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 la última 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 construyendo 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.

2
geoffc

Actualmente no puedo agregar un comentario a respuesta por duffbeer7 , así que aquí como respuesta por separado:

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

1
Olaf Mandel