2019年2月16日土曜日

PowerShellでCPU利用率を取得してみる

CPUの利用率をすぐに見たい時の話ですが、王道はもちろんタスクマネージャーを開いてCPUの利用率グラフを見る事ではあります。

ただ、タスクマネージャーそのものがかなり起動コストが高く、愛用のASUS E203MAをもってしても、ちょっと一瞬だけCPU利用率を見たい時に使うのは重過ぎる存在。

そこで、PowerShellでコマンド実行時のCPU利用率を表示するようにしてみました。



function global:CPU() {
    $CPU = GET-WMIOBJECT Win32_PerfFormattedData_PerfOS_Processor
    Write-Host "---CPU利用率---"
    $CPU | %{$__N="[CPUコア]"; $__P = " 利用率: " + $_.PercentProcessorTime.ToString("000") + "%";if($_.Name -eq "_Total"){ ($__N+"*総力"+$__P)}else{($__N + $_.Name + "号機"+$__P)}}

}

↑ただこのコマンド、正直、コンソールから入力するには非常に長すぎるコマンドで厳しい。

そこで、いきなりコンソールを叩くのをやめて、さっさとCPUという関数を作ってしまいます。

これをプロファイル($PROFILEコマンドでファイルの場所と名前が表示されます)に組み込んでおくと、PowerShell起動の度に登録されていつでも使えるようになります。

上記のようにすれば、コンソールからCPUと入力するだけで、CPU利用率を取得する事が出来ます。

取得時間は数秒を要する事もあり、無反応だから言ってあわてて切らないようにお願いいたします。



Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

C:\>CPU
---CPU利用率---
[CPUコア]0号機 利用率: 020%
[CPUコア]1号機 利用率: 020%
[CPUコア]*総力 利用率: 020%
C:\>CPU
---CPU利用率---
[CPUコア]0号機 利用率: 037%
[CPUコア]1号機 利用率: 037%
[CPUコア]*総力 利用率: 037%
C:\>CPU
---CPU利用率---
[CPUコア]0号機 利用率: 029%
[CPUコア]1号機 利用率: 041%
[CPUコア]*総力 利用率: 035%

↑実行するとこのような結果が出てきます。

ASUS E203MAで実行しているのでコアは2つだけ。

ただx86プロセッサは1コアあたりの能力が高いので、2コアあれば十分に心強いです。

コマンドは当たり前ですが、何回も実行可能で、その時の利用率を持ってきます。


↑ちなみに、PowerShellやるなら、VS Code(Visual Studio Code)を使うと良いと思います。

ターミナルという、ファイルの拡張子に基づいて各種用意されるプログラム実行環境があるので、普通にエディタの全力でPowerShellのコマンドを書けて、実行する時は、実行したいテキストだけを選択した後でメニューから「選択したテキストを実行」ってするだけ。

ISEという、PowerShell向けのIDEがWindows 10には標準搭載されて来るのですが、これはこれで良いものの、個人的には今やLinuxやMac OSでも用意されているVS Codeで統一して行きたいです。