2024年1月20日土曜日

(PC) powerShellでCPUの稼働率を表示する方法

今回の記事は、powerShellでCPUの稼働率を表示する方法です。

稼働率をパーセンテージで表示するだけでなく、視覚的にバーグラフ表示してます。

ただ1%でバー一本なので、解像度によってはバー長過ぎ問題になるかもなので、2%で1本にするとか適宜改造してもらえればと思います。

昔は、GET-WMIOBJECTコマンドレットを使っていましたが、今やこれは非推奨になってしまったので、新しいGET-CIMINSTANCEコマンドレットを使っています。

windows専用の5.xxでも、マルチプラットホームのpowerShell 7.xxでも両方で動かす場合は、文字コードを必ずUTF8 with BOMにして欲しいです。

日本語のメッセージを使っているので、文字コードを間違うとエラーになっちゃうんですよね。

あと管理者モードで動かして欲しいです。




#CPU情報の表示
function CPU() {
    $CPU = Get-CimInstance -Class Win32_PerfFormattedData_PerfOS_Processor;
    #$SPEED = Get-CimInstance -Class Win32_Processor;
    Write-Output ("---CPU利用率---");
    $__N="[CPU] ";
    $CPU|`
    SORT {if($_.NAME -eq "_Total"){$_.NAME}else{[int]$_.NAME}} |`
    %{$__P = " : " + $_.PercentProcessorTime.ToString("000") + "%";
       if($_.Name -eq "_Total"){ 
           Write-Output ("****************************************");   
           Write-Output ($__N+"**総力"+$__P+" "+(dispProgress $_.PercentProcessorTime 1));
           Write-Output ("****************************************");
       }else{
           Write-Output ($__N + ([int]$_.Name+1).ToString("00") + "号機"+$__P+" "+(dispProgress $_.PercentProcessorTime 1));
       }
    };
}

#進捗率をバーグラフにする($ratioでバー1本)
function dispProgress($value=0, $ratio =1) {
    $dispRes = New-Object System.Text.StringBuilder # StringBuilderクラスのインスタンスを作成
    for($i=0;$i -lt $value;$i+=$ratio) { # -ltに修正
        $dispRes.Append("|") | Out-Null # Appendメソッドで文字列を追加
    }

    return $dispRes.ToString() # ToStringメソッドで文字列に変換して返す
}



ROG FLOW Z13で動かすと、驚異の(論理)CPUコアが20基!!

ROG FLOW Z13で動かすと、論理コアが驚異の20基になるので、10年以上に渡って「最高が論理8基が最高にして究極なり!!」の状態で来ていた私にとっては、ちょっと衝撃が大きい!!

↑ちなみに、ROG FLOW Z13ですが、(ROG専用の設定アプリで)サイレントモードにして運用してるので、Surface Go2と同等の完全無音サイレントです。

冷却ファン全然回さなくとも、液体金属(!!)と、ベイパーチェンバーによる放熱のみで全然間に合う、ROGテクノロジーには脱帽です...