コマンドラインから確認する方法
スクリプトを作る、あるいは簡易に現在の状態を知りたいなどの場合には、コマンドラインからもパフォーマンスカウンターを扱うことができる。その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)"
}
}
}
パフォーマンスカウンターのインスタンスに「*」を指定すると、すべてのインスタンスを出力する。ここでは、カウンターセットに「Process」を指定しているので、プロセス(インスタンス)ごとのCPU使用率を得ることができる。
すべてのプロセスの情報が1つのオブジェクトとしてパイプに出力される。ここで、Get-Counterにサンプリング回数や間隔を指定すると、全プロセスの情報を含むオブジェクトが複数パイプライン側に出力される。
なので、サンプリングごとに処理するため、Get-Counterコマンドの出力をforeach-objectで受ける。その中で、foreachループを使って、if文でインスタンス1つ1つを調べ、CookedValueが5以上になるものを見つけて表示させている(idelと_totalは除外している)。
typeperf.exe、Get-Counterコマンドなど、パフォーマンスカウンターを扱えるツールを使うことで、Windowsの状態を調べることができる。ただ、すべてのカウンターに関しての日本語化されたドキュメントがあるわけではないので、どのカウンターを調べるべきか迷うことが多い。とりあえずはパフォーマンスモニターのカウンター追加ダイアログで、「説明を追加する」のチェックボックスをオンにすると、解説を日本語で見ることができる。
この連載の記事
-
第457回
PC
IPv6アドレスは先頭を見ればどんな種類かわかる -
第456回
PC
あらためてIPv6基本のキ -
第455回
PC
Windowsで現在どのネットワークアダプタがインターネット接続に使われているかを調べる方法 -
第454回
PC
Windows 11 24H2では「デバイスの暗号化」の条件が変わり、より多くのPCでドライブが暗号化される -
第453回
PC
Windows 11 24H2の配布開始後もすぐにはやってこない Windows UpdateとSafeguard Holds -
第452回
PC
Windows 11 Ver.24H2が登場 Copilot+ PCとそうでないPCで実質Windowsが2つに分かれる -
第451回
PC
新しいWindowsサンドボックスではコマンドラインからの制御が可能に -
第450回
PC
ユニコードで文字数を数える方法 -
第449回
PC
WSLはプレビュー版でGUIでの設定が加わった! リリース2.3.xの新機能を見る -
第448回
PC
PowerShellで面倒なオブジェクトはPSCustomObjectに変換するのが早道 -
第447回
PC
この秋登場のWindows 11の新バージョン、Ver.24H2の状況を見る - この連載の一覧へ