コマンドラインから確認する方法
スクリプトを作る、あるいは簡易に現在の状態を知りたいなどの場合には、コマンドラインからもパフォーマンスカウンターを扱うことができる。その1つはtypeperf.exeコマンドだ(https://learn.microsoft.com/ja-jp/windows-server/administration/windows-commands/typeperf)。typeperf.exeでは、間隔や計測時間を指定して結果をCSVファイルなどに保存することができる。以下のコマンドで、CPU負荷率を1秒ごとに表示する。
typeperf.exe "\Processor Information(_Total)\% Processor Utility"
このコマンド例では、「\Processor Information」がカウンターセット名であり、カッコの中の「_Total」がインスタンス(これはCPU全体の平均値。特定のコアは0から始まる数値で指定)、「% Processor Utility」がカウンター名である。
また「-q [カウンターセット名]」オプションで指定可能なカウンターのリストを、「-qx [カウンターセット名]」で、インスタンスのリストを表示させることができる。
PowerShellから、パフォーマンスカウンターを使うには、get-counterコマンド(https://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.diagnostics/get-counter?view=powershell-7.4)を使う。PowerShell 7.x以降では、実行に管理者権限が必要となるが、Windowsに同梱されているWindows PowerShell 5.1では不要だ。
こちらも、typeperf.exeと同じく、サンプリング間隔やサンプリング数を指定して連続計測ができる。ただし、何もオプションを指定しないと1回のみの測定になる。カウンターの指定方法法は、typeperf.exeと同じ。カウンターやインスタンスのリストなどは、「-ListSet [カウンターセット名]」を使ってGet-Counterコマンドを実行し、「Counter」プロパティ(カウンタのリスト)、「PathsWithInstances」プロパティ(インスタンス一覧)から得ることができる。
PowerShellでは、以下のリストのようにコマンドの組合せで、さまざまな処理が可能であり、結果によって何らかの処理や記録、通知をできる。
Get-Counter "\Process(*)\% Processor Time" | Foreach-Object{
foreach($x in $_.CounterSamples){
if($x.CookedValue -gt 5 -and $x.InstanceName -ne "idle" -and $x.InstanceName -ne "_total"){
Write-Host "$($x.InstanceName) $($x.CookedValue)"
}
}
}
PowerShellのGet-Counterコマンドでパフォーマンスカウンターの値を取得でき、パイプラインでコマンドを組み合わせることで、カウンター値に応じて処理を行うなどが可能になる。ここでは、全プロセスのプロセッサ時間の割り当てからその値が5を越えるものだけを表示させている
パフォーマンスカウンターのインスタンスに「*」を指定すると、すべてのインスタンスを出力する。ここでは、カウンターセットに「Process」を指定しているので、プロセス(インスタンス)ごとのCPU使用率を得ることができる。
すべてのプロセスの情報が1つのオブジェクトとしてパイプに出力される。ここで、Get-Counterにサンプリング回数や間隔を指定すると、全プロセスの情報を含むオブジェクトが複数パイプライン側に出力される。
なので、サンプリングごとに処理するため、Get-Counterコマンドの出力をforeach-objectで受ける。その中で、foreachループを使って、if文でインスタンス1つ1つを調べ、CookedValueが5以上になるものを見つけて表示させている(idelと_totalは除外している)。
typeperf.exe、Get-Counterコマンドなど、パフォーマンスカウンターを扱えるツールを使うことで、Windowsの状態を調べることができる。ただ、すべてのカウンターに関しての日本語化されたドキュメントがあるわけではないので、どのカウンターを調べるべきか迷うことが多い。とりあえずはパフォーマンスモニターのカウンター追加ダイアログで、「説明を追加する」のチェックボックスをオンにすると、解説を日本語で見ることができる。
本記事はアフィリエイトプログラムによる収益を得ている場合があります

この連載の記事
-
第541回
PC
AIを組み込んだWindowsターミナル「Intelligent Terminal」をインストールして試してみる -
第540回
PC
Windows 11に付属の新しいOutlookでアカウント設定をする -
第539回
PC
Microsoft製の新しいWindows用日本語入力「Copilot Keyboard」を使う -
第538回
PC
PowerShellをシェルとして使うためのポイント【情報表示のやり方】 -
第537回
PC
PowerShellをシェルとして使うためのポイントを解説 -
第536回
PC
Microsoft製のコンソールエディタMS-Editが2.0になり、文法ハイライト機能が搭載 -
第535回
PC
WSLコンテナーのプレビューを試す 今年はWSLに動きがありそうだ -
第534回
PC
Windows 11におけるアプリインストーラーとwinget -
第533回
PC
PCの世界ではすっかり存在感が薄くなった光学メディアをあらためて整理 -
第532回
PC
モニターの情報が含まれる「VESA EDID」をWindowsで調べる方法 -
第531回
PC
Windowsのコンソール上でUnix/Linuxの標準的なコマンドを動かす「Windows CoreUtils」 - この連載の一覧へ











