Hardware Monitoring Scripts
Monitor Available MemoryMonitor 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