Listar última atualização do Windows - vbscript

0

Estou tentando escrever um script que leia uma lista de servidores de um arquivo de texto e exiba a última vez que um Windows Update foi aplicado.

Set fso = CreateObject("Scripting.FileSystemObject")
Set file = fso.OpenTextFile ("serverlist.txt", 1)

Do Until file.AtEndOfStream
  line = file.Readline
  'wscript.echo line
  Set objSession = CreateObject("Microsoft.Update.Session", line)
  Set objSearcher = objSession.CreateUpdateSearcher
  Set colHistory = objSearcher.QueryHistory(1, 1)
  For Each objEntry in colHistory
    Wscript.Echo line
    Wscript.Echo " " & objEntry.Date
  Next
Loop

file.Close

Estou coçando a cabeça, porque acho que deveria funcionar, mas não é. Aqui está o erro que estou recebendo:

C:\Users\xxx\Desktop\new.vbs(6, 3) Microsoft VBScript runtime error: The remote server machine does not exist or is unavailable: 'CreateObject'

Eu estou sentindo falta de algo óbvio?

EDITAR:

Após investigar mais, parece que o Set objSession = CreateObject("Microsoft.Update.Session", line) não pode ser passado uma variável, se eu colocar "Servername" em vez disso, funciona bem ...

    
por Keltari 08.04.2014 / 17:43

1 resposta

1

Depois de bater minha cabeça, eu refiz meu script:

On Error Resume Next
Set fso = CreateObject("Scripting.FileSystemObject")
Set file = fso.OpenTextFile ("servers.csv", 1)
server = ""

Do Until file.AtEndOfStream
  line = file.Readline
  server = line
  'wscript.echo server
  Set objSession = CreateObject("Microsoft.Update.Session", server)
  If Err.Number <> 0 Then
    'WScript.Echo server & " Error: " & Err.Number & " Error (Hex): " & Hex(Err.Number) & " Source: " &  Err.Source & " Description: " &  Err.Description
    WScript.Echo server & " Communications Error"
    Err.Clear
  Else
      Set objSearcher = objSession.CreateUpdateSearcher
      Set colHistory = objSearcher.QueryHistory(1, 1)
      For Each objEntry in colHistory
        Wscript.Echo server & " " & objEntry.Date
      Next
  End If
Loop

file.Close

principalmente funciona. Ele falha em máquinas que estão desligadas, obviamente. Mas também falha em algumas máquinas que estão definitivamente em alta. Isso é um problema para um dia diferente.

    
por 08.04.2014 / 22:14