Contact Info

Crumbtrail

ActiveXperts.com » Administration » VBScript Collection » Hardware » Monitoring

Hardware Monitoring Scripts

Monitor Available Memory
Monitor Changes in Computer Power Status
Monitor Cache Performance
Monitor Memory Performance
Monitor Processor Performance
Monitor Processor Use
Verify Computer Availability
Verify System Uptime


You can use any of the VBScript programs below in ActiveXperts Network Monitor. Click here for an explanation about how to include scripts in ActiveXperts Network Monitor.



Monitor Available Memory


Uses cooked performance counters to issue an alert if available memory on a computer falls below 4 megabytes.
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
set objRefresher = CreateObject("WbemScripting.SWbemRefresher")
Set objMemory = objRefresher.AddEnum _
    (objWMIService, "Win32_PerfFormattedData_PerfOS_Memory").objectSet
objRefresher.Refresh

Do
    For Each intAvailableBytes in objMemory
        If intAvailableBytes.AvailableMBytes < 4 Then
            Wscript.Echo "Available memory has fallen below 4 megabytes."
        End If
    Next
    objRefresher.Refresh
Loop
	

Monitor Changes in Computer Power Status


Issues an alert if a computer changes power state (for example, enters or leaves suspend mode).
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colMonitoredEvents = objWMIService.ExecNotificationQuery _
    ("Select * from Win32_PowerManagementEvent")

Do
    Set strLatestEvent = colMonitoredEvents.NextEvent
    Wscript.Echo strLatestEvent.EventType
Loop
	

Monitor Cache Performance


Uses cooked performance counters to monitor the file system cache, an area of physical memory that stores recently used data as long as possible to permit access to the data without having to read from the disk.
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
set objRefresher = CreateObject("WbemScripting.SWbemRefresher")
Set colItems = objRefresher.AddEnum _
    (objWMIService, "Win32_PerfFormattedData_PerfOS_Cache").objectSet
objRefresher.Refresh

For i = 1 to 5
    For Each objItem in colItems
        Wscript.Echo "Asynchronous Copy Reads Per Second: " & _
            objItem.AsyncCopyReadsPersec
        Wscript.Echo "Asynchronous Data Maps Per Second: " & _
            objItem.AsyncDataMapsPersec
        Wscript.Echo "Asynchronous Fast Reads Per Second: " & _
            objItem.AsyncFastReadsPersec
        Wscript.Echo "Asynchronous MDL Reads Per Second: " & _
            objItem.AsyncMDLReadsPersec
        Wscript.Echo "Asynchronous Pin Reads Per Second: " & _
            objItem.AsyncPinReadsPersec
        Wscript.Echo "Caption: " & objItem.Caption
        Wscript.Echo "Copy Read Hits Percent: " & objItem.CopyReadHitsPercent
        Wscript.Echo "Copy Reads Per Second: " & objItem.CopyReadsPersec
        Wscript.Echo "Data Flushes Per Second: " & objItem.DataFlushesPersec
        Wscript.Echo "Data Flush Pages Per Second: " & _
            objItem.DataFlushPagesPersec
        Wscript.Echo "Data Map Hits Percent: " & objItem.DataMapHitsPercent
        Wscript.Echo "Data Map Pins Per Second: " & objItem.DataMapPinsPersec
        Wscript.Echo "Data Maps Per Second: " & objItem.DataMapsPersec
        Wscript.Echo "Description: " & objItem.Description
        Wscript.Echo "Fast Read Not Possibles Per Second: " & _
            objItem.FastReadNotPossiblesPersec
        Wscript.Echo "Fast Read Resource Misses Per Second: " & _
            objItem.FastReadResourceMissesPersec
        Wscript.Echo "Fast Reads Per Second: " & objItem.FastReadsPersec
        Wscript.Echo "Lazy Write Flushes Per Second: " & _
            objItem.LazyWriteFlushesPersec
        Wscript.Echo "Lazy Write Pages Per Second: " & _
            objItem.LazyWritePagesPersec
        Wscript.Echo "MDL Read Hits Percent: " & objItem.MDLReadHitsPercent
        Wscript.Echo "MDL Reads Per Second: " & objItem.MDLReadsPersec
        Wscript.Echo "Name: " & objItem.Name
        Wscript.Echo "Pin Read Hits Percent: " & objItem.PinReadHitsPercent
        Wscript.Echo "Pin Reads Per Second: " & objItem.PinReadsPersec
        Wscript.Echo "Read Aheads Per Second: " & objItem.ReadAheadsPersec
        Wscript.Echo "Synchronous Copy Reads Per Second: " & _
            objItem.SyncCopyReadsPersec
        Wscript.Echo "Synchronous Data Maps Per Second: " & _
            objItem.SyncDataMapsPersec
        Wscript.Echo "Synchronous Fast Reads Per Second: " & _
            objItem.SyncFastReadsPersec
        Wscript.Echo "Synchronous MDL Reads Per Second: " & _
            objItem.SyncMDLReadsPersec
        Wscript.Echo "Synchronous Pin Reads Per Second: " & _
            objItem.SyncPinReadsPersec
        Wscript.Sleep 2000
        objRefresher.Refresh
    Next
Next
	

Monitor Memory Performance


Uses cooked performance counters to monitor physical and virtual memory on the computer.
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
set objRefresher = CreateObject("WbemScripting.SWbemRefresher")
Set colItems = objRefresher.AddEnum _
    (objWMIService, "Win32_PerfFormattedData_PerfOS_Memory").objectSet
objRefresher.Refresh

For i = 1 to 5
    For Each objItem in colItems
        Wscript.Echo "Available Bytes: " & objItem.AvailableBytes
        Wscript.Echo "Available Kilobytes: " & objItem.AvailableKBytes
        Wscript.Echo "Available Megabytes: " & objItem.AvailableMBytes
        Wscript.Echo "Cache Bytes: " & objItem.CacheBytes
        Wscript.Echo "Cache Bytes Peak: " & objItem.CacheBytesPeak
        Wscript.Echo "Cache Faults Per Second: " & objItem.CacheFaultsPersec
        Wscript.Echo "Caption: " & objItem.Caption
        Wscript.Echo "Commit Limit: " & objItem.CommitLimit
        Wscript.Echo "Committed Bytes: " & objItem.CommittedBytes
        Wscript.Echo "Demand Zero Faults Per Second: " & _
            objItem.DemandZeroFaultsPersec
        Wscript.Echo "Description: " & objItem.Description
        Wscript.Echo "Free System Page Table Entries: " & _
            objItem.FreeSystemPageTableEntries
        Wscript.Echo "Name: " & objItem.Name
        Wscript.Echo "Page Faults Per Second: " & objItem.PageFaultsPersec
        Wscript.Echo "Page Reads Per Second: " & objItem.PageReadsPersec
        Wscript.Echo "Pages Input Per Second: " & objItem.PagesInputPersec
        Wscript.Echo "Pages Output Per Second: " & objItem.PagesOutputPersec
        Wscript.Echo "Pages Per Second: " & objItem.PagesPersec
        Wscript.Echo "Page Writes Per Second: " & objItem.PageWritesPersec
        Wscript.Echo "Percent Committed Bytes In Use: " & _
            objItem.PercentCommittedBytesInUse
        Wscript.Echo "Pool Nonpaged Allocations: " & objItem.PoolNonpagedAllocs
        Wscript.Echo "Pool Nonpaged Bytes: " & objItem.PoolNonpagedBytes
        Wscript.Echo "Pool Paged Allocations: " & objItem.PoolPagedAllocs
        Wscript.Echo "Pool Paged Bytes: " & objItem.PoolPagedBytes
        Wscript.Echo "Pool Paged Resident Bytes: " & _
            objItem.PoolPagedResidentBytes
        Wscript.Echo "System Cache Resident Bytes: " & _
            objItem.SystemCacheResidentBytes
        Wscript.Echo "System Code Resident Bytes: " & _
            objItem.SystemCodeResidentBytes
        Wscript.Echo "System Code Total Bytes: " & objItem.SystemCodeTotalBytes
        Wscript.Echo "System Driver Resident Bytes: " & _
            objItem.SystemDriverResidentBytes
        Wscript.Echo "System Driver Total Bytes: " & _
            objItem.SystemDriverTotalBytes
        Wscript.Echo "Transition Faults Per Second: " & _
            objItem.TransitionFaultsPersec
        Wscript.Echo "Write Copies Per Second: " & objItem.WriteCopiesPersec
        Wscript.Sleep 2000
        objRefresher.Refresh
    Next
Next
	

Monitor Processor Performance


Uses cooked performance counters to monitor processor activity.
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
set objRefresher = CreateObject("WbemScripting.SWbemRefresher")
Set colItems = objRefresher.AddEnum _
    (objWMIService, "Win32_PerfFormattedData_PerfOS_Processor").objectSet
objRefresher.Refresh

For i = 1 to 5
    For Each objItem in colItems
        Wscript.Echo "C1 Transitions Per Second: " & _
            objItem.C1TransitionsPersec
        Wscript.Echo "C2 Transitions Per Second: " & _
            objItem.C2TransitionsPersec
        Wscript.Echo "C3 Transitions Per Second: " & _
            objItem.C3TransitionsPersec
        Wscript.Echo "Caption: " & objItem.Caption
        Wscript.Echo "Description: " & objItem.Description
        Wscript.Echo "DPC Rate: " & objItem.DPCRate
        Wscript.Echo "DPCs Queued Per Second: " & objItem.DPCsQueuedPersec
        Wscript.Echo "Interrupts Per Second: " & objItem.InterruptsPersec
        Wscript.Echo "Name: " & objItem.Name
        Wscript.Echo "Percent C1 Time: " & objItem.PercentC1Time
        Wscript.Echo "Percent C2 Time: " & objItem.PercentC2Time
        Wscript.Echo "Percent C3 Time: " & objItem.PercentC3Time
        Wscript.Echo "Percent DPC Time: " & objItem.PercentDPCTime
        Wscript.Echo "Percent Idle Time: " & objItem.PercentIdleTime
        Wscript.Echo "Percent Interrupt Time: " & objItem.PercentInterruptTime
        Wscript.Echo "Percent Privileged Time: " & _
            objItem.PercentPrivilegedTime
        Wscript.Echo "Percent Processor Time: " & objItem.PercentProcessorTime
        Wscript.Echo "Percent User Time: " & objItem.PercentUserTime
        Wscript.Sleep 2000
        objRefresher.Refresh
    Next
Next
	

Monitor Processor Use


Uses cooked performance counters to monitor processor use on a computer. Triggers an alert if processor use exceeds 90 percent on 10 successive measurements (measured at 6-second intervals).
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
set objRefresher = CreateObject("WbemScripting.Swbemrefresher")
Set objProcessor = objRefresher.AddEnum _
    (objWMIService, "Win32_PerfFormattedData_PerfOS_Processor").objectSet
intThresholdViolations = 0
objRefresher.Refresh

Do
    For Each intProcessorUse in objProcessor
        If intProcessorUse.PercentProcessorTime > 90 Then
            intThresholdViolations = intThresholdViolations + 1
                If intThresholdViolations = 10 Then
                    intThresholdViolations = 0
                    Wscript.Echo "Processor usage threshold exceeded."
                End If
        Else
            intThresholdViolations = 0
        End If
    Next
    Wscript.Sleep 6000
    objRefresher.Refresh
Loop
	

Verify Computer Availability


Uses the Win32_PingStatus class to verify that a computer is accessible over the network.
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colPingedComputers = objWMIService.ExecQuery _
    ("Select * from Win32_PingStatus Where Address = '192.168.1.37'")

For Each objComputer in colPingedComputers
    If objComputer.StatusCode = 0 Then
        Wscript.Echo "Remote computer responded."
    Else
        Wscript.Echo "Remote computer did not respond."
   End If
Next
	

Verify System Uptime


Calculates system uptime; that is, the number of hours a computer has been running since its last restart.
strComputer = "."
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
    dtmLastBootupTime = WMIDateStringToDate(dtmBootup)
    dtmSystemUptime = DateDiff("h", dtmLastBootUpTime, Now)
    Wscript.Echo dtmSystemUptime 
Next
 
Function WMIDateStringToDate(dtmBootup)
    WMIDateStringToDate = CDate(Mid(dtmBootup, 5, 2) & "/" & _
        Mid(dtmBootup, 7, 2) & "/" & Left(dtmBootup, 4) _
            & " " & Mid (dtmBootup, 9, 2) & ":" & _
                Mid(dtmBootup, 11, 2) & ":" & Mid(dtmBootup,13, 2))
End Function