• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    磁盘IO利用率监控VBS脚本(windows)

    核心代码

    '程序名称:      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.Count1) 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"," cid>"
    
    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

    用到了WMI,需要的朋友可以参考一下

    您可能感兴趣的文章:
    • vbs定期监控 值个班,定期瞄一下
    • VBScript 监控并结束指定进程的代码
    • VBScript 监控磁盘更改事件实现代码
    • VBS监控CPU的使用率(如占用率一直维持在80%超过30秒则运行某程序)
    • 网络接口利用率监控VBS脚本代码(Windows)
    • 进程监控实现代码[vbs+bat]
    • 用VBS调用程序并对程序的运行情况进行监控的两个代码
    • 如何使用vb 监控电脑活动记录
    上一篇:用vbs实现文本循环读取
    下一篇:监测windows主机网络接口利用率的vbs代码
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

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