コマンドラインから確認する方法
スクリプトを作る、あるいは簡易に現在の状態を知りたいなどの場合には、コマンドラインからもパフォーマンスカウンターを扱うことができる。その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の状態を調べることができる。ただ、すべてのカウンターに関しての日本語化されたドキュメントがあるわけではないので、どのカウンターを調べるべきか迷うことが多い。とりあえずはパフォーマンスモニターのカウンター追加ダイアログで、「説明を追加する」のチェックボックスをオンにすると、解説を日本語で見ることができる。

この連載の記事
-
第508回
PC
Scalable Vector Graphics(SVG)そもそも何なのか? -
第507回
PC
Windows 11の「開発者モード」とは何か? -
第506回
PC
Windows 11は早くも来秋登場の26H2プレビューの準備が始まる -
第505回
PC
結構変化しているWindows 11のエクスプローラーの基本設定を見直す -
第504回
PC
新しいOutlookとOutlook Classic、そろそろ古いOutlookとExchangeの組み合わせは引退の頃合いか -
第503回
PC
機能が増えたこともあり、寄せ集めから統合化に進むWindowsの便利ツール「PowerToys」 -
第502回
PC
Windows 11でBluetoothのオーディオ新規格「Bluetooth LE Audio」を試す -
第501回
PC
Windows 11 Ver.25H2での変更点、新機能を整理する -
第500回
PC
Windows 11 Ver.25H2が完成した -
第499回
PC
Windowsでの致命的だが回復可能なエラーに備える手段を2つ紹介 -
第498回
PC
Windows Terminalの安定版V1.23が公開 設定UIが改良される - この連載の一覧へ











