1
我正在尋找使用VBScript文件監視在窗口2003服務器上運行的進程。我已經看到了PercentProcessorTime,但這並沒有真正捕獲使用情況。無論如何要確定一個百分比的使用情況嗎?在VBScript中可以確定每個進程的CPU使用情況嗎?
我正在尋找使用VBScript文件監視在窗口2003服務器上運行的進程。我已經看到了PercentProcessorTime,但這並沒有真正捕獲使用情況。無論如何要確定一個百分比的使用情況嗎?在VBScript中可以確定每個進程的CPU使用情況嗎?
看起來可以將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
感謝您的文章鏈接。我已經看到了,而這正是我最終使用的。 – Flynn81 2009-06-12 12:43:28