在脚本中访问性能数据

WMI 脚本可以在本地计算机上或远程访问预安装的 WMI 性能计数器类。 虽然脚本可以从未计算的类,例如从 Win32_PerfRawData_PerfOS_Memory 或格式化的类 Win32_PerfFormattedData_PerfOS_Memory 获取数据,但格式化的数据类更易于使用。

要使用性能计数器类监视性能数据,需要使用刷新程序。 使用 SWbemRefresher 对象存储刷新的一个或多个性能对象,或者通过 SWbemObjectEx.Refresh 调用刷新单个对象。 有关详细信息,请参阅在脚本中刷新 WMI 数据

通过将 SWbemRefresher.AutoReconnect 属性设置为 TRUE,WMI 会在连接断开时自动重新连接到远程提供程序,因此无需检查连接状态。

如以下脚本代码示例脚本所示,必须进行初始刷新调用才能获取要刷新的对象的起始值。 随后的刷新调用会包含数据。

注意

如果脚本从远程计算机访问 WMI 性能计数器数据,该脚本只能在当前登录的用户帐户下运行。 WMI 不支持传入不同用户凭据的 SWbemLocator.ConnectServer 调用。 因此,调用远程计算机的帐户必须已在该计算机上具有相应权限。

 

以下脚本代码示例演示如何使用 SWbemRefresher 对象来更新性能计数器对象中的数据。 若要详细了解如何在 WMI 中使用性能计数器,请参阅访问 WMI 预安装的性能类

' Get raw and cooked data performance counter instances for the
" wscript process running this script

set RawProc = GetObject("winmgmts:Win32_PerfRawdata_Perfproc_process.name='wscript'")
set CookedProc = GetObject("winmgmts:Win32_Perfformatteddata_Perfproc_process.name='wscript'")

' Display the same property in raw and cooked form in a loop
for I = 1 to 6
    Wscript.Echo "wscript process raw PageFaultsPerSec = & RawProc.PageFaultsPerSec _
                 & " cooked PageFaultsPerSec= " & CookedProc.PageFaultsPerSec 

' Wait 2 seconds
    Wscript.Sleep 2000
    
    ' Refresh the object
    RawProc.Refresh_
    CookedProc.Refresh_
next

示例

以下脚本代码示例显示必须进行初始刷新调用才能获取已刷新的对象的起始值。 随后的刷新调用会包含数据。

以下脚本代码示例演示如何使用 SWbemRefresher 对象来更新性能计数器对象中的数据。 若要详细了解如何在 WMI 中使用性能计数器,请参阅访问 WMI 预安装的性能类

' Get raw and cooked data performance counter instances for the
" wscript process running this script

set RawProc = GetObject("winmgmts:" _
                        & "Win32_PerfRawdata_Perfproc_process." _
                        & "name='wscript'")
set CookedProc = GetObject("winmgmts:" _ 
                & "Win32_Perfformatteddata_Perfproc_process." _
                & "name='wscript'")

' Display the same property in raw and cooked form in a loop
for I = 1 to 6
    Wscript.Echo "wscript process raw PageFaultsPerSec = " _
                 & RawProc.PageFaultsPerSec _
                 & " cooked PageFaultsPerSec= " _
                 & CookedProc.PageFaultsPerSec 

' Wait 2 seconds
    Wscript.Sleep 2000
    
    ' Refresh the object
    RawProc.Refresh_
    CookedProc.Refresh_
next

性能计数器类

WMI 任务:性能监视

监视性能数据