【问题标题】:Can CPU usage per process be determined in VBScript?可以在 VBScript 中确定每个进程的 CPU 使用率吗?
【发布时间】:2009-06-05 00:35:19
【问题描述】:

我正在寻找使用 VBScript 文件监视在 windows 2003 服务器上运行的进程。我见过 PercentProcessorTime,但这并没有真正捕捉到使用情况。有没有办法确定使用百分比?

【问题讨论】:

    标签: vbscript


    【解决方案1】:

    似乎可以将 WMI 与 perfmon 计数器结合使用。请参考this article

    以下是相关代码:

    For Each Process in GetObject("winmgmts:").ExecQuery("Select * from Win32_Process")
         WScript.echo Process.name & " " & CPUUSage(Process.Handle) & " %"   
    Next
    
    
    Function CPUUSage( ProcID )
        On Error Resume Next
    
        Set objService = GetObject("Winmgmts:{impersonationlevel=impersonate}!\Root\Cimv2")
    
        For Each objInstance1 in objService.ExecQuery("Select * from Win32_PerfRawData_PerfProc_Process where IDProcess = '" & ProcID & "'")
            N1 = objInstance1.PercentProcessorTime
            D1 = objInstance1.TimeStamp_Sys100NS
            Exit For
        Next
    
         WScript.Sleep(2000)
    
        For Each perf_instance2 in objService.ExecQuery("Select * from Win32_PerfRawData_PerfProc_Process where IDProcess = '" & ProcID & "'")
            N2 = perf_instance2.PercentProcessorTime
            D2 = perf_instance2.TimeStamp_Sys100NS
            Exit For
        Next
    
        ' CounterType - PERF_100NSEC_TIMER_INV
        ' Formula - (1- ((N2 - N1) / (D2 - D1))) x 100
        Nd = (N2 - N1)
        Dd = (D2-D1)
        PercentProcessorTime = ( (Nd/Dd))  * 100
    
        CPUUSage = Round(PercentProcessorTime ,0)
    End Function
    

    【讨论】:

    • 感谢文章的链接。我已经看到了,这就是我最终使用的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-11
    • 1970-01-01
    • 2012-03-05
    • 2012-12-12
    相关资源
    最近更新 更多