我需要将PagesPersec值从Win32_PerfRawData_PerfOS_Memory转换为PerfFormatted Data值。如何将PerfRaw数据值从WMI Perfomance计数器转换为PerfFormatted Data值。是否有Windows推荐的标准公式。
答案 0 :(得分:1)
您需要的公式取决于CounterType ...请参阅 http://msdn.microsoft.com/en-us/library/aa392761(v=VS.85).aspx
要开始使用,请查看http://msdn.microsoft.com/en-us/library/aa394597.aspx
答案 1 :(得分:0)
这里回答太久了。有一篇非常好的文章包含样本http://msdn.microsoft.com/en-us/library/ms974615.aspx
简而言之:它取决于柜台类型。对于某些计数器,我可以只读取(磁盘空间)并且需要基于两个请求计算一个比另一个稍晚的计算,例如:
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
("Select * From Win32_PerfRawData_PerfOS_Processor Where Name = '0'")
For Each objItem in colItems
CounterValue1 = objItem.InterruptsPerSec
TimeValue1 = objItem.TimeStamp_PerfTime
TimeBase = objItem.Frequency_PerfTime
Next
For i = 1 to 5
Wscript.Sleep(1000)
Set colItems = objWMIService.ExecQuery _
("Select * From Win32_PerfRawData_PerfOS_Processor Where Name = '0'")
For Each objItem in colItems
CounterValue2 = objItem.InterruptsPerSec
TimeValue2 = objItem.TimeStamp_PerfTime
If TimeValue2 - TimeValue1 = 0 Then
Wscript.Echo "Interrupts Per Second = 0"
Else
intInterrupts = (CounterValue2 - CounterValue1) / _
( (TimeValue2 - TimeValue1) / TimeBase)
Wscript.Echo "Interrupts Per Second = " & Int(intInterrupts)
End if
CounterValue1 = CounterValue2
TimeValue1 = TimeValue2
Next
Next