磁盘IO利用率监控VBS脚本(windows)

这篇文章主要为大家分享监测windows主机IO利用率的脚本代码,需要的朋友可以参考一下

核心代码

 '程序名称:      btlwchk_DiskIO.vbs '版权信息:      Copyright (c)  2011 guangzhou bluetech technology Incorporated.All rights reserved '程序用途:      监测windows主机IO利用率 '创建日期:      2011-08-10 '作者信息:      zhangkai '运行环境:      vbs '处理参数 MonSubject="DiskIO" Set Args=WScript.Arguments If (Args.Count<1) Then  Wscript.Echo MonSubject & " -1:command line error"  WScript.Quit(3) End If strcid=Args(0) '获取工作目录 tmparr=Split(Wscript.ScriptFullName,"\",-1) g_strworkdir=tmparr(0) narr=UBound(tmparr,1) For i=1 to narr-3     g_strworkdir=g_strworkdir & "\" & tmparr(i) Next '装载公共库 set g_fileSys = createObject ("Scripting.FileSystemObject") Sub includeFile (fSpec)     dim file, fileData     set file = g_fileSys.openTextFile (fSpec)     fileData = file.readAll ()     file.close     executeGlobal fileData     set file = nothing  end sub includeFile g_strworkdir & "\nagios\libexec\libcomm.vbs" '输出版本和帮助信息 getverhelp strcid,"v1.00"," " strComputer = "."   Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")  '第1次采样IO Set colItems = objWMIService.ExecQuery("Select * from Win32_PerfRawData_PerfDisk_LogicalDisk where name='_Total' ",,48) For Each objItem in colItems      DiskTime1 = objItem.PercentDiskTime      BaseTime1 = objItem.PercentDiskTime_Base   DiskBytes1 = objItem.DiskBytesPerSec   DiskReadBytes1 = objItem.DiskReadBytesPerSec   DiskWriteBytes1 = objItem.DiskWriteBytesPerSec   AvgDiskTransfer1 = objItem.AvgDiskSecPerTransfer   AvgDiskTransferBase1 = objItem.AvgDiskSecPerTransfer_Base   AvgDiskRead1 = objItem.AvgDiskSecPerRead   AvgDiskReadBase1 = objItem.AvgDiskSecPerRead_Base   AvgDiskWrite1 = objItem.AvgDiskSecPerWrite   AvgDiskWriteBase1 = objItem.AvgDiskSecPerWrite_Base   TimeValue1 = objItem.Timestamp_PerfTime   TimeBase = objItem.Frequency_PerfTime Next '第2次采样IO WScript.Sleep 1000 Set colItems = objWMIService.ExecQuery("Select * from Win32_PerfRawData_PerfDisk_LogicalDisk where name='_Total' ",,48) For Each objItem in colItems      DiskTime2 = objItem.PercentDiskTime   BaseTime2 = objItem.PercentDiskTime_Base   DiskBytes2 = objItem.DiskBytesPerSec   DiskReadBytes2 = objItem.DiskReadBytesPerSec   DiskWriteBytes2 = objItem.DiskWriteBytesPerSec   AvgDiskTransfer2 = objItem.AvgDiskSecPerTransfer   AvgDiskTransferBase2 = objItem.AvgDiskSecPerTransfer_Base   AvgDiskRead2 = objItem.AvgDiskSecPerRead   AvgDiskReadBase2 = objItem.AvgDiskSecPerRead_Base   AvgDiskWrite2 = objItem.AvgDiskSecPerWrite   AvgDiskWriteBase2 = objItem.AvgDiskSecPerWrite_Base   TimeValue2 = objItem.Timestamp_PerfTime         CurrentDiskQueueLength = objItem.CurrentDiskQueueLength Next '获取IO利用率 If BaseTime2 - BaseTime1 = 0 Then  strio ="Name=_Toltal"  & ",PercentDiskTime=0%" Else  PercentDiskTime =(DiskTime2 - DiskTime1)/(BaseTime2 - BaseTime1)*100   strio = "Name=_Total"  & ",PercentDiskTime="  & PercentDiskTime End If '获取Disk Bytes/sec If TimeValue2 - TimeValue1 = 0 Then     strdiskbyte = ",DiskBytesPerSec=0" Else     DiskBytesPerSec = (DiskBytes2 - DiskBytes1) / ( (TimeValue2 - TimeValue1) / TimeBase)     strdiskbyte = ",DiskBytesPerSec="  & DiskBytesPerSec End If '获取Disk Read Bytes/sec If TimeValue2 - TimeValue1 = 0 Then     strdiskreadbyte = ",DiskReadBytesPerSec=0" Else     DiskReadBytesPerSec = (DiskReadBytes2 - DiskReadBytes1) / ( (TimeValue2 - TimeValue1) / TimeBase)     strdiskreadbyte = ",DiskReadBytesPerSec="  & DiskReadBytesPerSec End If '获取Disk Write Bytes/sec If TimeValue2 - TimeValue1 = 0 Then     strdiskwritebyte = ",DiskWriteBytesPerSec=0" Else     DiskWriteBytesPerSec = (DiskWriteBytes2 - DiskWriteBytes1) / ( (TimeValue2 - TimeValue1) / TimeBase)     strdiskwritebyte = ",DiskWriteBytesPerSec="  & DiskWriteBytesPerSec End If '获取Avg. Disk sec/Transfer If AvgDiskTransferBase2 - AvgDiskTransferBase1 = 0 Then     stravgdisktran = ",AvgDiskSecPerTransfer=0" Else     AvgDiskSecPerTransfer = ((AvgDiskTransfer2 - AvgDiskTransfer1) / TimeBase) / (AvgDiskTransferBase2 - AvgDiskTransferBase1)     stravgdisktran = ",AvgDiskSecPerTransfer="  & AvgDiskSecPerTransfer End If '获取Avg. Disk sec/Read If AvgDiskReadBase2 - AvgDiskReadBase1 = 0 Then     stravgdiskread = ",AvgDiskSecPerRead=0" Else     AvgDiskSecPerRead = ((AvgDiskRead2 - AvgDiskRead1) / TimeBase) / (AvgDiskReadBase2 - AvgDiskReadBase1)     stravgdiskread = ",AvgDiskSecPerRead="  & AvgDiskSecPerRead End If '获取Avg. Disk sec/Write If AvgDiskWriteBase2 - AvgDiskWriteBase1 = 0 Then     stravgdiskwrite = ",AvgDiskSecPerWrite=0" Else     AvgDiskSecPerWrite = ((AvgDiskWrite2 - AvgDiskWrite1) / TimeBase) / (AvgDiskWriteBase2 - AvgDiskWriteBase1)     stravgdiskwrite = ",AvgDiskSecPerWrite="  & AvgDiskSecPerWrite End If '获取Current Disk Queue Length strdisklength = ",CurrentDiskQueueLength="  & CurrentDiskQueueLength Wscript.Echo MonSubject & " 0:OK|" & strio & strdiskbyte & strdiskreadbyte & strdiskwritebyte & stravgdisktran & stravgdiskread & stravgdiskwrite & strdisklength以上就是磁盘IO利用率监控VBS脚本(windows)的详细内容,更多请关注0133技术站其它相关文章!

赞(0) 打赏
未经允许不得转载:0133技术站首页 » 脚本专栏