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