0

Linux用のwmiクライアントを使用しています。それを介して、WQL を実行して Windows サーバーにリモートでクエリを実行できます。

例えば;

 Select * from Win32_ComputerSystem

私がやろうとしているのは、使用されている CPU の割合を計算することです。

「Win32_PerfFormattedData_Counters_ProcessorInformation」から「PercentProcessorTime」の値を取得しています。これは単一の CPU を搭載したコンピューターでは問題なく機能していると思いますが、複数の CPU を搭載したコンピューターの CPU 使用率を計算する方法がわかりません。

どんな助けでも大歓迎です。

乾杯。

4

1 に答える 1

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%
于 2013-01-21T07:43:22.663 に答える