从Linux上的WMI客户端获取CPU利用率

时间:2013-01-21 06:44:06

标签: linux perl wmi monitoring wql

我正在使用wmi客户端进行linux。通过它,您可以执行WQL以远程查询Windows服务器。

例如;

 Select * from Win32_ComputerSystem

我要做的是计算使用的CPU百分比。

我从'Win32_PerfFormattedData_Counters_ProcessorInformation'获得'PercentProcessorTime'的值。我认为这对于具有单个CPU的计算机来说工作正常,但我对如何计算具有多个CPU的计算机的CPU使用率感到迷茫。

非常感谢任何帮助。

欢呼声。

1 个答案:

答案 0 :(得分:2)

如果您SELECT * FROM Win32_PerfFormattedData_Counters_ProcessorInformation,那么您将获得结果集列表。第一组是所有CPU的总值,其余是各CPU的值。

此代码显示了这个想法。请注意,您应将SYSTEM替换为您要查询的计算机的名称。

use strict;
use warnings;

use Win32::OLE;
use Win32::OLE::Variant;

STDOUT->autoflush;

my $wmi = Win32::OLE->GetObject('winmgmts:\\\\SYSTEM\root\cimv2') or die Win32::OLE->LastError;
my $list = $wmi->ExecQuery('SELECT * FROM Win32_PerfFormattedData_Counters_ProcessorInformation');
my $n = 0;
for my $cpu (in $list) {
  printf "%s: %d%%\n", $n ? "CPU$n" : ' ALL', $cpu->PercentProcessorTime;
  $n++;
}

<强>输出

 ALL: 8%
CPU1: 8%
CPU2: 12%
CPU3: 6%
CPU4: 12%
CPU5: 6%
CPU6: 6%
CPU7: 6%