WMI 任务:性能监视
使用从性能计数器获取数据的 WMI 类来访问和刷新有关计算机性能的数据。 有关其他示例,请通过 https://www.microsoft.com/technet 访问 TechNet ScriptCenter。 有关详细信息,请参阅性能库和 WMI 和监视性能数据。
本主题中所示的脚本示例仅从本地计算机获取数据。 有关如何使用脚本从远程计算机获取数据的详细信息,请参阅连接到远程计算机上的 WMI。
以下过程介绍了如何运行脚本。
运行脚本
- 复制代码并将其保存在扩展名为 .vbs 的文件中,例如 filename.vbs。 确保文本编辑器不会向该文件添加 .txt 扩展名。
- 打开命令提示符窗口并导航到保存该文件的目录。
- 在命令提示符下键入 cscript filename.vbs。
- 如果无法访问事件日志,请进行检查以查看是否正从提升的命令提示符运行。 某些事件日志(例如安全事件日志)可能受用户访问控制 (UAC) 的保护。
注意
默认情况下,cscript 会在命令提示符窗口中显示脚本的输出。 由于 WMI 脚本可以生成大量输出,因此可能需要将输出重定向到文件。 在命令提示符下键入 cscript filename.vbs > outfile.txt 以将 filename.vbs 脚本的输出重定向到 outfile.txt。
下表列出了可用于从本地计算机获取各种类型的数据的脚本示例。
如何实现... | WMI 类或方法 | ||
---|---|---|---|
…获取可在脚本的 Perfmon 实用工具中看到的性能计数器数据? | 使用名称以“Win32_PerfFormattedData”开头的类,例如 Win32_PerfFormattedData_PerfProc_Process。 名称如 PageFileBytes 的属性对应于 Perfmon 中所看到的性能计数器。 “Win32_PerfFormattedData”类会为你计算计数器的最终值。 |
||
…获取单个进程、磁盘驱动器和其他数据的持续性能数据? | 使用 Win32_PerfFormattedData_PerfProc_Process 或设置适当格式的性能计数器类和 SWbemObjectEx.Refresh_ 方法。 有关详细信息,请参阅使用 SWbemObject 编写脚本。 在 C++ 中,使用 IWbemConfigureRefresher::AddObjectByPath 和 IWbemRefresher::Refresh。 有关详细信息,请参阅监视性能数据。 以下脚本将运行到计算机重启、WMI 停止或脚本停止为止。 若要手动停止脚本,请使用任务管理器来停止进程。 若要以编程方式停止脚本,请在 Win32_Process 类中使用 Terminate 方法。
|
||
…无需重复轮询即可获取所有进程的持续性能数据? | 使用名称以“Win32_PerfFormattedData”开头的类和 SWbemRefresher 对象。 刷新器会保存对象,因此无需重复获取集合。 计算性能数据至少需要两个值,因为大多数计数器都是速率计数器。 首次显示刷新器数据时,刷新器是空的。 以下脚本将无限期运行,直到计算机重启、WMI 停止或脚本停止。 若要手动停止脚本,请使用任务管理器来停止进程。 若要以编程方式停止脚本,请在 Win32_Process 类中使用 Terminate 方法。
|
||
…获取并计算 Windows 2000 进程的性能数据? | 使用“Win32_PerfRawData”类,例如 Win32_PerfRawData_PerfProc_Process。 为特定进程获取两次属性数据,例如 PercentProcessorTime。 查找属性的 CounterType 限定符中指定的公式并进行计算。 示例中的 CounterType 是 PERF_100NSEC_TIMER_INV。 有关详细信息,请参阅监视性能数据。 以下脚本将无限期运行,直到计算机重启、WMI 停止或脚本停止。 若要手动停止脚本,请使用任务管理器来停止进程。 若要以编程方式停止脚本,请在 Win32_Process 类中使用 Terminate 方法。
|