Я пытаюсь написать скрипт, который читает список серверов из текстового файла и выводит последний раз, когда был применен Центр обновления Windows.

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

Я чешу голову, потому что думаю, что это должно сработать, но это не так. Вот ошибка, которую я получаю:

C:\Users\xxx\Desktop\new.vbs(6, 3) Ошибка времени выполнения Microsoft VBScript: компьютер удаленного сервера не существует или недоступен: «CreateObject»

Я что-то упускаю из виду?

РЕДАКТИРОВАТЬ:

После более подробного изучения это выглядит как Set objSession = CreateObject("Microsoft.Update.Session", line) не может быть передана переменная, если я поставлю" Servername ", вместо этого он работает нормально ...

1 ответ1

1

После удара головой я переделал свой сценарий:

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

Это в основном работает. Это выходит из строя на машинах, которые выключены, очевидно. Но это также дает сбой на нескольких машинах, которые определенно работают. Это проблема для другого дня.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .