我正在使用linux的wmi客户端。通过它,您可以执行WQL来远程查询windows服务器。
例如:
Select * from Win32_ComputerSystem我要做的是计算CPU使用率。
我一直在从'Win32_PerfFormattedData_Counters_ProcessorInformation'.获取'PercentProcessorTime‘的值我认为这对于具有单CPU的计算机工作得很好,但是我不知道如何计算具有多个CPU的计算机的CPU使用率。
任何帮助都是非常感谢的。
干杯。
发布于 2013-01-21 15:43:23
如果你使用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%https://stackoverflow.com/questions/14433584
复制相似问题