Latencia al descargar actualizaciones en Win2k3 desde script

02/07/2007 - 15:36 por Edgard Gerardo | Informe spam
Hola, tengo un ambiente muy dinámico, tengo un servidor de WSUS para las
actualizaciones a servidores. Para los servidores nuevos, luego de instalar
el Sistema Operativo, se actualiza a través de WSUS, pero para que sea de
manera mas rápida se crearon dos script, uno de ellos es para el registro en
el WSUS y el otro es para la descarga e instalación de las actualizaciones,
este último script se creo por la demora en mostrar las actualizaciones
disponibles en el servidor luego de ejecutar el comando wuauclt /downloadnow
y wuauclt /downloadnowfast, pero este último script funciona de manera
instantanea en Windows 2000 Server pero en Windows Server 2003 al ejecutarlo
inmediatamente muestra el mensaje de no haber actualizaciones para este
servidor pero luego de ejecutar al pasar mas de una hora si muestra las
actualizaiones.

El script para las instalaciones es:
=Const ForReading = 1
Const ForWriting = 2

Set updateSession = CreateObject("Microsoft.Update.Session")
Set updateSearcher = updateSession.CreateupdateSearcher()

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile("c:\Updates.txt", ForWriting, true)
Set objTextFile = objFSO.OpenTextFile ("c:\Updates.txt", ForReading)
Set objNetwork = CreateObject("Wscript.Network")
strComputer = objNetwork.ComputerName
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "oot\cimv2")
Set colServiceList = objWMIService.ExecQuery _
("Select * from Win32_Service where Name='wuauserv'")

For Each objService in colServiceList
objService.StopService()
next

For Each objService in colServiceList
objService.StartService()
next

Set autoUpdateClient =
CreateObject("Microsoft.Update.AutoUpdate",strComputer)
AutoUpdateClient.detectnow()

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

objFile.WriteLine "Actualizaciones disponibles para el servidor "
&strComputer &":"
objFile.WriteLine blanco

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

objFile.WriteLine blanco
objFile.WriteLine "Presione OK para comenzar la instalación"

If searchResult.Updates.Count = 0 Then
WScript.Echo "No hay actualizaciones para este servidor"
WScript.Quit
End If

strText = objTextFile.ReadAll
objTextFile.Close

WScript.Echo strText

' La descarga ==
Set updatesToDownload = CreateObject("Microsoft.Update.UpdateColl")
Set downloader = updateSession.CreateUpdateDownloader()

For I = 0 to searchResult.Updates.Count-1
Set update = searchResult.Updates.Item(I)
updatesToDownload.Add(update)
Next

downloader.Updates = updatesToDownload
downloader.download()


' La instalación =
Set updatesToInstall = CreateObject("Microsoft.Update.UpdateColl")

Set installer = updateSession.CreateUpdateInstaller()

For I = 0 To searchResult.Updates.Count-1
set update = searchResult.Updates.Item(I)
If update.IsDownloaded = true Then
updatesToInstall.Add(update)
End If
Next

installer.Updates = updatesToInstall
Set installationResult = installer.Install()

msgbox "Actualizado"
=Como explique antes, funciona perfecto en Windows 2000 Server pero en
Windows Server 2003 tarda mas de una hora en mostrar las actualizaciones.

En Windows 2000 Server primero se instalá la última versión de Automatic
Update Agent.

Por Favor, necesito que este script funcione de igual manera en ambos
Sistemas Operativos, es decir, que me muestre las actualizaciones al ejecutar
el script inmediatamente después de ser registrado en WSUS.

Gracias...
 

Leer las respuestas

#1 Edgard Hersen
21/07/2007 - 19:30 | Informe spam
Hola, cuál script te refieres?, el mio?. recuerda que el mio tarda como una
hora en servidores que recien le instalen Windows Server 2003
Edgard Hersen
http://edgard-hersen.blogspot.com/


"Rodolfo Parrado Gutiérrez [MVP]" wrote:

usa este sencillo script y el solicitara al wsus las acutalizaciones maximo
en 10 minutos...



Rodolfo Parrado Gutiérrez
MVP Windows Server Security MCT MCSE MCSA MCP+I
https://mvp.support.microsoft.com/profile/Rodolfo

La seguridad no es binaria. No es un switch o aún una serie de switches. No
es un firewall, IDS, NIDS, PIDS, APIDS, IPS, HIDS. No puede ser expresada en
términos absolutos. No le creas a cualquier persona que intente convencerte
de otra manera. La seguridad es relativa, es solamente más segura y menos
segura. Adicionalmente, la seguridad es dinámica, todo cambia, las personas,
los procesos y la tecnología. Es por eso que en el fondo todos estos
factores hacen el manejo de la seguridad más difícil. Ten siempre en mente
que las personas y los procesos son partes integrales de la seguridad.
Eduque a las personas y las empresas, con los principios, las prácticas y
las recomendaciones, no solamente para estar equipadas para administrar la
seguridad, sino también para que estén equipadas en pensar acerca de la
seguridad. La seguridad interna es importante, no solo la externa.


"Edgard Gerardo" wrote in message
news:
> Hola, tengo un ambiente muy dinámico, tengo un servidor de WSUS para las
> actualizaciones a servidores. Para los servidores nuevos, luego de
> instalar
> el Sistema Operativo, se actualiza a través de WSUS, pero para que sea de
> manera mas rápida se crearon dos script, uno de ellos es para el registro
> en
> el WSUS y el otro es para la descarga e instalación de las
> actualizaciones,
> este último script se creo por la demora en mostrar las actualizaciones
> disponibles en el servidor luego de ejecutar el comando wuauclt
> /downloadnow
> y wuauclt /downloadnowfast, pero este último script funciona de manera
> instantanea en Windows 2000 Server pero en Windows Server 2003 al
> ejecutarlo
> inmediatamente muestra el mensaje de no haber actualizaciones para este
> servidor pero luego de ejecutar al pasar mas de una hora si muestra las
> actualizaiones.
>
> El script para las instalaciones es:
> => > Const ForReading = 1
> Const ForWriting = 2
>
> Set updateSession = CreateObject("Microsoft.Update.Session")
> Set updateSearcher = updateSession.CreateupdateSearcher()
>
> Set objFSO = CreateObject("Scripting.FileSystemObject")
> Set objFile = objFSO.OpenTextFile("c:\Updates.txt", ForWriting, true)
> Set objTextFile = objFSO.OpenTextFile ("c:\Updates.txt", ForReading)
> Set objNetwork = CreateObject("Wscript.Network")
> strComputer = objNetwork.ComputerName
> Set objWMIService = GetObject("winmgmts:" _
> & "{impersonationLevel=impersonate}!\\" & strComputer & "oot\cimv2")
> Set colServiceList = objWMIService.ExecQuery _
> ("Select * from Win32_Service where Name='wuauserv'")
>
> For Each objService in colServiceList
> objService.StopService()
> next
>
> For Each objService in colServiceList
> objService.StartService()
> next
>
> Set autoUpdateClient > > CreateObject("Microsoft.Update.AutoUpdate",strComputer)
> AutoUpdateClient.detectnow()
>
> ' La busqueda ==> > Set searchResult = _
> updateSearcher.Search("IsInstalled=0 and Type='Software'")
>
> objFile.WriteLine "Actualizaciones disponibles para el servidor "
> &strComputer &":"
> objFile.WriteLine blanco
>
> For I = 0 To searchResult.Updates.Count-1
> Set update = searchResult.Updates.Item(I)
> objFile.WriteLine I + 1 & "> " & update.Title
> Next
>
> objFile.WriteLine blanco
> objFile.WriteLine "Presione OK para comenzar la instalación"
>
> If searchResult.Updates.Count = 0 Then
> WScript.Echo "No hay actualizaciones para este servidor"
> WScript.Quit
> End If
>
> strText = objTextFile.ReadAll
> objTextFile.Close
>
> WScript.Echo strText
>
> ' La descarga ==> >
> Set updatesToDownload = CreateObject("Microsoft.Update.UpdateColl")
> Set downloader = updateSession.CreateUpdateDownloader()
>
> For I = 0 to searchResult.Updates.Count-1
> Set update = searchResult.Updates.Item(I)
> updatesToDownload.Add(update)
> Next
>
> downloader.Updates = updatesToDownload
> downloader.download()
>
>
> ' La instalación => >
> Set updatesToInstall = CreateObject("Microsoft.Update.UpdateColl")
>
> Set installer = updateSession.CreateUpdateInstaller()
>
> For I = 0 To searchResult.Updates.Count-1
> set update = searchResult.Updates.Item(I)
> If update.IsDownloaded = true Then
> updatesToInstall.Add(update)
> End If
> Next
>
> installer.Updates = updatesToInstall
> Set installationResult = installer.Install()
>
> msgbox "Actualizado"
> => > Como explique antes, funciona perfecto en Windows 2000 Server pero en
> Windows Server 2003 tarda mas de una hora en mostrar las actualizaciones.
>
> En Windows 2000 Server primero se instalá la última versión de Automatic
> Update Agent.
>
> Por Favor, necesito que este script funcione de igual manera en ambos
> Sistemas Operativos, es decir, que me muestre las actualizaciones al
> ejecutar
> el script inmediatamente después de ser registrado en WSUS.
>
> Gracias...

Preguntas similares