在脚本中访问性能数据

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 任务:性能监视

监视性能数据