7 votos

Disparar de forma remota WSUS Descargado la Instalación de la actualización

Esto ha me ha estado molestando por un tiempo. Tenemos nuestro conjunto de Servidores para descargar sólo las actualizaciones de windows para organizarlos para ser instalado durante uno de nuestros bi-mensual parche de windows. He buscado de alta y baja para una forma de activar la instalación de forma remota en los servidores durante este tiempo, así que no tengo que iniciar una sesión en un cien o más servidores y haga clic en "Instalar Actualizaciones Ahora" globo.

Alguien sabe de una forma de activar la actualización de las instalaciones de forma remota?

6voto

Zypher Puntos 26466

Finalmente lo entendí. Hay un (apenas) documentaron la API de windows update que se puede utilizar para activar estos tipos de cosas. He utilizado una forma modificada de la secuencia de comandos encontrado aquí que es lo más cercano a la documentación como usted puede conseguir.

La he modificado de la siguiente, sacar la descarga de piezas - porque tengo el control de la descarga con el GPO y WSUS, así como todas las indicaciones. A continuación, he insertado el código reiniciar el cuadro si es necesario por las actualizaciones.

Set updateSession = CreateObject("Microsoft.Update.Session")
Set updateSearcher = updateSession.CreateupdateSearcher()
WScript.Echo "Searching for updates..." & vbCRLF

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


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


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

WScript.Echo  vbCRLF & _
"Creating collection of downloaded updates to install:" 

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

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

'If (strInput = "N" or strInput = "n") Then 
'   WScript.Quit
'ElseIf (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 
    If (installationResult.RebootRequired = True) Then
        Set RebootShell = WScript.CreateObject("Wscript.Shell")
        RebootShell.Run "shutdown.exe -r -t 0"
    End If

    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

El siguiente paso fue pegamento esto junto con psExec - que no le gusta correr VBScripts de forma remota. Puse el siguiente archivo por lotes para copiar la secuencia de comandos localmente en el servidor, a continuación, se iniciará la instalación con psExec se ejecuta como un usuario del Sistema:

for /f %%i in (%1) do copy installUpdates.vbs \\%%i\c$
psexec @%1 -s cscript C:\installUpdates.vbs

Todo lo que necesitas en este momento es pasar a la secuencia de comandos por lotes de un archivo de texto con los nombres de los equipos en - uno por línea, y usted es bueno ir. No más iniciar sesión en cada servidor de kick off de windows update se instala!

El problema que es un poco molesto, es que es muy parecido a una ejecución en serie, así que si usted tiene un montón de actualizaciones podría tomar un tiempo. No pude encontrar una buena forma de evitar esto, además de romper su lista de máquinas y ejecutar varias copias del archivo por lotes. No es el fin del mundo.


Poco de una actualización. Me enteré de que hay algunas instalaciones que usted sólo necesita ser iniciado de forma interactiva con los permisos adecuados para instalar. básicamente, si wsus dice que no se pudo instalar tienes que ponerte en la caja. Aunque este es un buen paso de tener que iniciar sesión en CADA caja.

3voto

Shlomi Fish Puntos 1951

El uso de un GPO para llevarlos a todos a instalar automáticamente en un plazo de tiempo que está en su ventana y, a continuación, simplemente no aprobar alguna de las actualizaciones hasta pocas horas antes de su bi-mensual de windows rodar?

Usted todavía podría aprobar para su prueba en el banco de máquinas para ver si se les va a causar que el mundo implosionar, esto se asegura de que todos se descargan antes de la ventana, y de aprobación de los mismos para todos los servidores antes de salir de la oficina durante todo el día durante su ventana de actualización (supongo que es a una hora inapropiada de la mañana, no quiero ser para), todos ellos deberían ser hecho en el momento de llegar en el día siguiente.

0voto

kaerast Puntos 1954

También hay WuInstall. La versión gratuita no parece mejor que la WUA API script que he puesto juntos, pero la versión pro tiene una opción para aceptar automáticamente el eula, que me imagino que es lo que provoca la mayoría de las interactiva actualizaciones necesarias.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: