Scripts to Monitor Disks and Volumes
Monitor Available Disk SpaceMonitor Disk Bytes Per Second
Monitor Disk Drive Free Space
Monitor Logical Disk Drive Performance
Monitor Logical Disk Performance
Monitor Physical Disk Drive Performance
Monitor Physical Disk Performance
Monitor Volume Change Events
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 Disk Space
Issues an alert if free disk space for any hard drive on a computer falls below 100 megabytes.
Const LOCAL_HARD_DISK = 3 strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colMonitoredDisks = objWMIService.ExecNotificationQuery _ ("Select * from __instancemodificationevent within 30 where " _ & "TargetInstance isa 'Win32_LogicalDisk'") i = 0 Do While i = 0 Set objDiskChange = colMonitoredDisks.NextEvent If objDiskChange.TargetInstance.DriveType = LOCAL_HARD_DISK Then If objDiskChange.TargetInstance.Size < 100000000 Then Wscript.Echo "Hard disk space is below 100000000 bytes." End If End If Loop
Monitor Disk Bytes Per Second
Uses cooked performance counters to monitor disk bytes per second on a computer.
strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") set objRefresher = CreateObject("WbemScripting.SWbemRefresher") Set colDiskDrives = objRefresher.AddEnum _ (objWMIService, "Win32_PerfFormattedData_PerfDisk_LogicalDisk").objectSet objRefresher.Refresh For i = 1 to 500 For Each objDiskDrive in colDiskDrives Wscript.Echo "Drive name: " & objDiskDrive.Name Wscript.Echo "Disk bytes per second: " & objDiskDrive.DiskBytesPerSec Wscript.Sleep 2000 objRefresher.Refresh Next Next
Monitor Disk Drive Free Space
Uses cooked performance counters to retrieve free disk space on a computer.
strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colDiskDrives = objWMIService.ExecQuery _ ("Select * from Win32_PerfFormattedData_PerfDisk_LogicalDisk Where " _ & "Name <> '_Total'") For Each objDiskDrive in colDiskDrives Wscript.Echo "Drive Name: " & objDiskDrive.Name Wscript.Echo "Free Space: " & objDiskDrive.FreeMegabytes Next
Monitor Logical Disk Drive Performance
Uses cooked performance counters to monitor performance of the logical disk drives installed on a computer.
strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") set objRefresher = CreateObject("WbemScripting.SWbemRefresher") Set colDisks = objRefresher.AddEnum _ (objWMIService, "win32_perfformatteddata_perfdisk_logicaldisk"). _ objectSet objRefresher.Refresh For i = 1 to 100 For Each objDisk in colDisks Wscript.Echo "Average Disk Bytes Per Read: " & _ objDisk.AvgDiskBytesPerRead Wscript.Echo "Average Disk Bytes Per Transfer: " & _ objDisk.AvgDiskBytesPerTransfer Wscript.Echo "Average Disk Bytes Per Write: " & _ objDisk.AvgDiskBytesPerWrite Wscript.Echo "Average Disk Queue Length: " & _ objDisk.AvgDiskQueueLength Wscript.Echo "Average Disk Read Queue Length: " & _ objDisk.AvgDiskReadQueueLength Wscript.Echo "Average Disk Seconds Per Read: " & _ objDisk.AvgDiskSecPerRead Wscript.Echo "Average Disk Seconds Per Transfer: " & _ objDisk.AvgDiskSecPerTransfer Wscript.Echo "Average Disk Seconds Per Write: " & _ objDisk.AvgDiskSecPerWrite Wscript.Echo "Average Disk Write Queue Length: " & _ objDisk.AvgDiskWriteQueueLength Wscript.Echo "Current Disk Queue Length: " & _ objDisk.CurrentDiskQueueLength Wscript.Echo "Disk Bytes Per Second: " & _ objDisk.DiskBytesPerSec Wscript.Echo "Disk Read Bytes Per Second: " & _ objDisk.DiskReadBytesPerSec Wscript.Echo "Disk Reads Per Second: " & _ objDisk.DiskReadsPerSec Wscript.Echo "Disk Transfers Per Second: " & _ objDisk.DiskTransfersPerSec Wscript.Echo "Disk Write Bytes Per Second: " & _ objDisk.DiskWriteBytesPerSec Wscript.Echo "Disk Writes Per Second: " & _ objDisk.DiskWritesPerSec Wscript.Echo "Free Megabytes: " & objDisk.FreeMegabytes Wscript.Echo "Name: " & objDisk.Name Wscript.Echo "Percent Disk Read Time: " & _ objDisk.PercentDiskReadTime Wscript.Echo "Percent Disk Time: " & _ objDisk.PercentDiskTime Wscript.Echo "Percent Disk Write Time: " & _ objDisk.PercentDiskWriteTime Wscript.Echo "Percent Free Space: " & _ objDisk.PercentFreeSpace Wscript.Echo "Percent Idle Time: " & _ objDisk.PercentIdleTime Wscript.Echo "Split IO Per Second: " & _ objDisk.SplitIOPerSec Wscript.Sleep 2000 objRefresher.Refresh Next Next
Monitor Logical Disk Performance
Uses cooked performance counters to monitor logical disk performance.
strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") set objRefresher = CreateObject("WbemScripting.SWbemRefresher") Set colItems = objRefresher.AddEnum _ (objWMIService, "Win32_PerfFormattedData_PerfDisk_LogicalDisk").objectSet objRefresher.Refresh For i = 1 to 5 For Each objItem in colItems Wscript.Echo "Average Disk Bytes Per Read: " & _ objItem.AvgDiskBytesPerRead Wscript.Echo "Average Disk Bytes Per Transfer: " & _ objItem.AvgDiskBytesPerTransfer Wscript.Echo "Average Disk Bytes Per Write: " & _ objItem.AvgDiskBytesPerWrite Wscript.Echo "Average Disk Queue Length: " & objItem.AvgDiskQueueLength Wscript.Echo "Average Disk Read Queue Length: " & _ objItem.AvgDiskReadQueueLength Wscript.Echo "Average Disk Seconds Per Read: " & _ objItem.AvgDisksecPerRead Wscript.Echo "Average Disk Seconds Per Transfer: " & _ objItem.AvgDisksecPerTransfer Wscript.Echo "Average Disk Seconds Per Write: " & _ objItem.AvgDisksecPerWrite Wscript.Echo "Average Disk Write Queue Length: " & _ objItem.AvgDiskWriteQueueLength Wscript.Echo "Caption: " & objItem.Caption Wscript.Echo "Current Disk Queue Length: " & _ objItem.CurrentDiskQueueLength Wscript.Echo "Description: " & objItem.Description Wscript.Echo "Disk Bytes Per Second: " & objItem.DiskBytesPersec Wscript.Echo "Disk Read Bytes Per Second: " & _ objItem.DiskReadBytesPersec Wscript.Echo "Disk Reads Per Second: " & objItem.DiskReadsPersec Wscript.Echo "Disk Transfers Per Second: " & _ objItem.DiskTransfersPersec Wscript.Echo "Disk Write Bytes Per Second: " & _ objItem.DiskWriteBytesPersec Wscript.Echo "Disk Writes Per Second: " & objItem.DiskWritesPersec Wscript.Echo "Free Megabytes: " & objItem.FreeMegabytes Wscript.Echo "Name: " & objItem.Name Wscript.Echo "Percent Disk Read Time: " & objItem.PercentDiskReadTime Wscript.Echo "Percent Disk Time: " & objItem.PercentDiskTime Wscript.Echo "Percent Disk Write Time: " & _ objItem.PercentDiskWriteTime Wscript.Echo "Percent Free Space: " & objItem.PercentFreeSpace Wscript.Echo "Percent Idle Time: " & objItem.PercentIdleTime Wscript.Echo "Split I/O Per Second: " & objItem.SplitIOPerSec Wscript.Sleep 2000 objRefresher.Refresh Next Next
Monitor Physical Disk Drive Performance
Uses cooked performance counters to monitor performance of the physical disk drives installed on a computer.
strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") set objRefresher = CreateObject("WbemScripting.SWbemRefresher") Set colDisks = objRefresher.AddEnum _ (objWMIService, "win32_perfformatteddata_perfdisk_physicaldisk"). _ objectSet objRefresher.Refresh For i = 1 to 100 For Each objDisk in colDisks Wscript.Echo "Average Disk Bytes Per Read: " & vbTab & _ objDisk.AvgDiskBytesPerRead Wscript.Echo "Average Disk Bytes Per Transfer: " & vbTab & _ objDisk.AvgDiskBytesPerTransfer Wscript.Echo "Average Disk Bytes Per Write: " & vbTab & _ objDisk.AvgDiskBytesPerWrite Wscript.Echo "Average Disk Queue Length: " & vbTab & _ objDisk.AvgDiskQueueLength Wscript.Echo "Average Disk Read Queue Length: " & vbTab & _ objDisk.AvgDiskReadQueueLength Wscript.Echo "Average Disk Seconds Per Read: " & vbTab & _ objDisk.AvgDiskSecPerRead Wscript.Echo "Average Disk Seconds Per Transfer: " & vbTab & _ objDisk.AvgDiskSecPerTransfer Wscript.Echo "Average Disk Seconds Per Write: " & vbTab & _ objDisk.AvgDiskSecPerWrite Wscript.Echo "Average Disk Write Queue Length: " & vbTab & _ objDisk.AvgDiskWriteQueueLength Wscript.Echo "Current Disk Queue Length: " & vbTab & _ objDisk.CurrentDiskQueueLength Wscript.Echo "Disk Bytes Per Second: " & vbTab & _ objDisk.DiskBytesPerSec Wscript.Echo "Disk Read Bytes Per Second: " & vbTab & _ objDisk.DiskReadBytesPerSec Wscript.Echo "Disk Reads Per Second: " & vbTab & _ objDisk.DiskReadsPerSec Wscript.Echo "Disk Transfers Per Second: " & vbTab & _ objDisk.DiskTransfersPerSec Wscript.Echo "Disk Write Bytes Per Second: " & vbTab & _ objDisk.DiskWriteBytesPerSec Wscript.Echo "Disk Writes Per Second: " & vbTab & _ objDisk.DiskWritesPerSec Wscript.Echo "Name: " & vbTab & objDisk.Name Wscript.Echo "Percent Disk Read Time: " & vbTab & _ objDisk.PercentDiskReadTime Wscript.Echo "Percent Disk Time: " & vbTab & _ objDisk.PercentDiskTime Wscript.Echo "Percent Disk Write Time: " & vbTab & _ objDisk.PercentDiskWriteTime Wscript.Echo "Percent Idle Time: " & vbTab & _ objDisk.PercentIdleTime Wscript.Echo "Split IO Per Second: " & vbTab & _ objDisk.SplitIOPerSec Wscript.Sleep 2000 objRefresher.Refresh Next Next
Monitor Physical Disk Performance
Uses cooked performance counters to monitor physical disk performance.
strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") set objRefresher = CreateObject("WbemScripting.SWbemRefresher") Set colItems = objRefresher.AddEnum _ (objWMIService, "Win32_PerfFormattedData_PerfDisk_PhysicalDisk").objectSet objRefresher.Refresh For i = 1 to 5 For Each objItem in colItems Wscript.Echo "Average Disk Bytes Per Read: " & _ objItem.AvgDiskBytesPerRead Wscript.Echo "Average Disk Bytes Per Transfer: " & _ objItem.AvgDiskBytesPerTransfer Wscript.Echo "Average Disk Bytes Per Write: " & _ objItem.AvgDiskBytesPerWrite Wscript.Echo "Average Disk Queue Length: " & objItem.AvgDiskQueueLength Wscript.Echo "Average Disk Read Queue Length: " & _ objItem.AvgDiskReadQueueLength Wscript.Echo "Average Disk Seconds Per Read: " & _ objItem.AvgDisksecPerRead Wscript.Echo "Average Disk Seconds Per Transfer: " & _ objItem.AvgDisksecPerTransfer Wscript.Echo "Average Disk Seconds Per Write: " & _ objItem.AvgDisksecPerWrite Wscript.Echo "Average Disk Write Queue Length: " & _ objItem.AvgDiskWriteQueueLength Wscript.Echo "Caption: " & objItem.Caption Wscript.Echo "Current Disk Queue Length: " & _ objItem.CurrentDiskQueueLength Wscript.Echo "Description: " & objItem.Description Wscript.Echo "Disk Bytes Per Second: " & objItem.DiskBytesPersec Wscript.Echo "Disk Read Bytes Per Second: " & _ objItem.DiskReadBytesPersec Wscript.Echo "Disk Reads Per Second: " & objItem.DiskReadsPersec Wscript.Echo "Disk Transfers Per Second: " & _ objItem.DiskTransfersPersec Wscript.Echo "Disk Write Bytes Per Second: " & _ objItem.DiskWriteBytesPersec Wscript.Echo "Disk Writes Per Second: " & objItem.DiskWritesPersec Wscript.Echo "Name: " & objItem.Name Wscript.Echo "Percent Disk Read Time: " & objItem.PercentDiskReadTime Wscript.Echo "Percent Disk Time: " & objItem.PercentDiskTime Wscript.Echo "Percent Disk Write Time: " & objItem.PercentDiskWriteTime Wscript.Echo "Percent Idle Time: " & objItem.PercentIdleTime Wscript.Echo "Split I/O Per Second: " & objItem.SplitIOPerSec Wscript.Sleep 2000 objRefresher.Refresh Next Next
Monitor Volume Change Events
Temporary event consumer that issues an alert when local volumes are added to or deleted from a computer. (This class monitors only changes to local drives; it cannot detect the addition/deletion of network volumes.)
strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colMonitoredEvents = objWMIService. _ ExecNotificationQuery("Select * from Win32_VolumeChangeEvent") Do Set objLatestEvent = colMonitoredEvents.NextEvent Wscript.Echo objLatestEvent.DriveName Wscript.Echo objLatestEvent.EventType Wscript.Echo objLatestEvent.Time_Created Loop