2016-04-14 2 views
0

Я хочу создать файл журнала Excel для записи имени хоста, IP, состояния ping и состояния соединения WMI. Когда я пытаюсь запустить сценарий, у меня есть ошибка «объект требуется», но когда я проверяю код, я не мог найти, где я должен изменить код.Получил объект ошибки, необходимый при подключении WMI

On Error Resume Next 
Set Fso = CreateObject("Scripting.FileSystemObject") 
Set InputFile = Fso.OpenTextFile("file.txt", 1) 
Set objExcel = CreateObject("Excel.Application") 
objExcel.Visible = True 
objExcel.Workbooks.Add 
intRow = 2 

objExcel.Cells(1, 1).Value = "Hostname" 
objExcel.Cells(1, 2).Value = "IP" 
objExcel.Cells(1, 3).Value = "Ping" 
objExcel.Cells(1, 4).Value = "WMI" 

Do While Not (InputFile.atEndOfStream) 
    hostname = InputFile.ReadLine 

    Set WshShell = CreateObject("WScript.Shell") 
    Set Ping = WshShell.Run("ping -n 1 " & hostname, 0, True) 

    objExcel.Cells(intRow, 1).Value = hostname 

    Select Case Ping 
    Case 0 objExcel.Cells(intRow, 3).Value = "On Line" 
    Case 1 objExcel.Cells(intRow, 3).Value = "Off Line" 
    Case 2 objExcel.Cells(intRow, 3).Value = "N/A" 
    End Select 

    Set objWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & hostname & "\root\cimv2") 
    Set IPconfig = objWMI.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True") 

    If Err.Number = 0 Then 
    objExcel.Cells(intRow, 4).Value = "Pass" 
    For Each IP In IPconfig 
     If Not IsNull(IP.IPAddress) Then 
     For i = LBound(IP.IPAddress) To UBound(IP.IPAddress) 
      objExcel.Cells(intRow, 2).Value = IP.IPAddress(i) 
     Next 
     Else 
     objExcel.Cells(intRow, 2).Value = "N/A" 
     End If 
    Next 
    Else 
    objExcel.Cells(intRow, 4).Value = Err.Description 
    End If 

    intRow = intRow + 1 
Loop 

objExcel.Range("A1:B1:C1:D1").Select 
objExcel.Selection.Interior.ColorIndex = 19 
objExcel.Selection.Font.ColorIndex = 11 
objExcel.Selection.Font.Bold = True 
objExcel.Cells.EntireColumn.AutoFit 

InputFile.Close 
On Error Goto 0 

Set objExcel = Nothing 
Set Fso  = Nothing 
Set InputFile = Nothing 
Set objWMIService = Nothing 
Set WshShell = Nothing 
Set Ping = Nothing 
Set IPconfig = Nothing 

MsgBox "Done Analyse" 
objExcel.Quit 
Wscript.Quit 

ответ

2
Set Ping = WshShell.Run("ping -n 1 " & hostname, 0, True) 

WshShell возвращает целое число, не является объектом. Set - это ТОЛЬКО пользователь для объектов. Так что просто удалите слово set.

Wmi может сделать это самостоятельно. Вот версия командной строки, но вы можете подключить ее к заявлению WMI, которое вы используете для NetworkAdaptor.

wmic /append:"textfile.txt" path win32_pingstatus where "address='127.0.0.1' and responsetime > 100" get responsetime,timestamprecord 

Для справки, которая является таким же, как тип VBScript wmic path win32_pingstatus get /?

+0

привет лапша спасибо за советы :-) Теперь я понимаю, почему сторожевая ошибка обнаружилась :-) спасибо за объяснение. Я действительно ценю это снова спасибо – nurul

+0

hi noodles Я хочу спросить больше, как подключить другой компьютер удаленно? потому что у меня была ошибка, указывающая, что серверная машина недоступна – nurul

+0

Если имя хоста правильно, то оно недоступно. Имя хоста НЕ имеет предшествующих обратных косых черт, поэтому 'computername' не' \\ computername' –

Смежные вопросы