2019年2月17日日曜日

PowerShellで、メインRAMとストレージとCPU利用率を一回で表示する

当ブログでは、これまで、PowerShellにて、PCのメインRAM、ストレージ、CPU利用率を求めてきました。

まとめて「ALL_STATUS」で一回で表示するようにしてみました。

ちなみにプロファイルに組み込むのが手っ取り早いです。

プロファイルの場所を開くのは(あれば)「II (SPLIT-PATH $PROFILE)」コマンドです。



#メインRAMのモニター
function global:MEM() {
    $all=(Get-WmiObject Win32_OperatingSystem | %{($_.TotalVisibleMemorySize)});
    $free=(Get-WmiObject Win32_OperatingSystem | %{($_.FreePhysicalMemory)});
    $use=$all-$free;

    $all=[Math]::Round(($all/[Math]::Pow(1024,2)),3,[MidpointRounding]::AwayFromZero);
    $free=[Math]::Round(($free/[Math]::Pow(1024,2)),3,[MidpointRounding]::AwayFromZero);
    $use=[Math]::Round(($use/[Math]::Pow(1024,2)),3,[MidpointRounding]::AwayFromZero);
    
    $OutputEncoding = [console]::OutputEncoding;
    Write-Host "---メインRAM ---";
    Write-Host "ALL (GB)= " ($all).ToString();
    Write-Host "FREE(GB)= " ($free).ToString();
    Write-Host "USED(GB)= " ($use).ToString();
}

#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)}}

}

#Byte=>GB変換(小数点以下3桁まで)
function global:ConvertGB([double]$value) {
    $compute = [Math]::Round($value/[Math]::Pow(1024,3),3);
    
    return $compute;
}
#ストレージ状況
function global:STORAGE() {
    $LINE="-" * 80;
    $STORAGE_SOURCES = GET-PSDRIVE | ?{$_.Provider -match "FileSystem"}
    WRITE-HOST "---ストレージ使用状況---"
    WRITE-HOST $LINE;
    foreach($STORAGE_SOURCE in $STORAGE_SOURCES) {
        $MES = (
            $STORAGE_SOURCE.Name + "ドライブ"+
            " ☆空き(GB)=" +(ConvertGB ($STORAGE_SOURCE.Free)).ToString(".000")+
            " 使用中(GB)=" +(ConvertGB ($STORAGE_SOURCE.Used)).ToString(".000")+
            " 全容量(GB)=" +(ConvertGB ($STORAGE_SOURCE.Used + $STORAGE_SOURCE.Free)).ToString(".000")
        );
        WRITE-HOST $MES;
        if((ConvertGB $STORAGE_SOURCE.Free) -lt 18.0) {
            WRITE-OUTPUT ((" "*10)+"【容量注意】"); #WRITE-HOSTではないので注意
        }
        WRITE-HOST $LINE;
    }
}

#パソコンのメインRAM、ストレージ、CPU全てを一斉表示
function global:ALL_STATUS() {
    MEM
    STORAGE
    CPU
}


↑今までのコマンドをまとめただけですが、タスクマネージャーを起動してパフォーマンス見るよりは速いし、ASUS E203MAへの負担も少ないかなぁと。

PowerShellを起動するのは、Windowsキー+Xキーを押してから、Aキーです。



C:\>ALL_STATUS
---メインRAM ---
ALL (GB)=  3.827
FREE(GB)=  1.413
USED(GB)=  2.414
---ストレージ使用状況---
--------------------------------------------------------------------------------
Cドライブ ☆空き(GB)=20.082 使用中(GB)=37.107 全容量(GB)=57.189
--------------------------------------------------------------------------------
Dドライブ ☆空き(GB)=30.517 使用中(GB)=28.497 全容量(GB)=59.015
--------------------------------------------------------------------------------
---CPU利用率---
[CPUコア]0号機 利用率: 031%
[CPUコア]1号機 利用率: 025%
[CPUコア]*総力 利用率: 028%



↑ASUS E203MAだと、タスクマネージャーを開くと、このタスクマネージャーの起動そのものがCPUパワーを結構消費したり、なかなかの重さ。

コマンドで出来る事はコマンドでやりたいところです。