Do you want to check status of multiple servers ? Do you want to know whether it is online ? or Do you want to check when was it rebooted? And on top of that you have 100+ servers to check... here is the solution.
Below is a VBScript which gives you Ping Status and last boot time for a list of servers.
Set objFSO = CreateObject("Scripting.FileSystemObject")
'Servers.txt is the input file. Save the server names in this file.
Set objTextFile = objFSO.OpenTextFile("C:\temp\Servers.txt",1,True)
'Result.txt is the output file
Set objOutputFile = objFSO.OpenTextFile("C:\temp\Result.txt",2,True)
Do While objTextFile.AtEndOfLine <> True
strComputer = objTextFile.ReadLine
On Error resume Next
Set oWMI = GetObject("winmgmts:\\.\root\cimv2")
Set oPing = oWMI.Get("Win32_PingStatus.Address='"& strComputer & "'")
If oPing.StatusCode = 0 Then
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colOperatingSystems = objWMIService.ExecQuery _
("Select * from Win32_OperatingSystem")
For Each objOS in colOperatingSystems
dtmBootup = objOS.LastBootUpTime
Exit For
Next
WMIDateStringToDate = CDate(Mid(dtmBootup, 5, 2) & "/" & _
Mid(dtmBootup, 7, 2) & "/" & Left(dtmBootup, 4) )
WMIDateStringToTime = CDate(Mid(dtmBootup, 9, 2) & ":" & _
Mid(dtmBootup, 11, 2) & ":" & Mid(dtmBootup,13, 2))
objOutputFile.WriteLine( strComputer & vbTab & WMIDateStringToDate & " " & WMIDateStringToTime & vbTab & "Able to Ping")
Else
objOutputFile.WriteLine( strComputer & vbTab & "Not Able to Ping")
End If
Set colOperatingSystems = nothing
Set objWMIService = Nothing
Set oWMI = Nothing
Set oPing = Nothing
Loop
Wscript.Echo "Done"
Note :
Below is a VBScript which gives you Ping Status and last boot time for a list of servers.
Set objFSO = CreateObject("Scripting.FileSystemObject")
'Servers.txt is the input file. Save the server names in this file.
Set objTextFile = objFSO.OpenTextFile("C:\temp\Servers.txt",1,True)
'Result.txt is the output file
Set objOutputFile = objFSO.OpenTextFile("C:\temp\Result.txt",2,True)
Do While objTextFile.AtEndOfLine <> True
strComputer = objTextFile.ReadLine
On Error resume Next
Set oWMI = GetObject("winmgmts:\\.\root\cimv2")
Set oPing = oWMI.Get("Win32_PingStatus.Address='"& strComputer & "'")
If oPing.StatusCode = 0 Then
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colOperatingSystems = objWMIService.ExecQuery _
("Select * from Win32_OperatingSystem")
For Each objOS in colOperatingSystems
dtmBootup = objOS.LastBootUpTime
Exit For
Next
WMIDateStringToDate = CDate(Mid(dtmBootup, 5, 2) & "/" & _
Mid(dtmBootup, 7, 2) & "/" & Left(dtmBootup, 4) )
WMIDateStringToTime = CDate(Mid(dtmBootup, 9, 2) & ":" & _
Mid(dtmBootup, 11, 2) & ":" & Mid(dtmBootup,13, 2))
objOutputFile.WriteLine( strComputer & vbTab & WMIDateStringToDate & " " & WMIDateStringToTime & vbTab & "Able to Ping")
Else
objOutputFile.WriteLine( strComputer & vbTab & "Not Able to Ping")
End If
Set colOperatingSystems = nothing
Set objWMIService = Nothing
Set oWMI = Nothing
Set oPing = Nothing
Loop
Wscript.Echo "Done"
Note :
- The script can be used to retrieve the values from servers in the same domain.
- Save the script as a .vbs file and double click the same to run.
- Servers.txt will store the list of servers for which output is required.
- Result.txtis created which stored the output.