2019年2月6日水曜日

PowerShellで、メインRAMの利用状況を知りたい

メインRAM使用率を知りたい場合、いちいちタスクマネージャーを開くのは大変です。

そこで、PowerShellで「MEM」コマンドを作ってみました。

これは、MEMと入力する事で、全体容量、空き容量、使用中容量の3つの値を、小数点以下3位まで、ギガバイト単位で表示するものです。

ちなみに、PowerShell起動時のプロファイルに組み込みます。



function global:MEM() {
    $all=(Get-WmiObject Win32_OperatingSystem | %{($_.TotalVisibleMemorySize)});
    $free=(Get-WmiObject Win32_OperatingSystem | %{($_.FreePhysicalMemory)});
    $use=$all-$free;

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



↑ちなみに、プロファイルはD:\ドキュメント\WindowsPowerShell\Microsoft.PowerShell_profile.ps1なのですが、保存する時に決してUTF-8では保存しないで下さい。

なんとWrite-Hostで日本語を表示しようとすると文字化けします。

スクリプトファイルそのものの文字コードが影響するもので、内部でいくら文字コードを変更しようとも太刀打ちできないようになっています。

PowerShellは、foreachによるループを%{ }と短く書けるのも良いところ。


↑実行するとこんな感じです。

ALLは全体の容量、FREEは空き容量、USEDが使用中容量です。



function global:EMPTY() {
    CMD /C "empty *";
    CLEAR-HOST;
    MEM;
}


↑おまけ、と言ってはなんですが、メインRAMをクリーンナップするEMPTYコマンドも作って組み込んでみました。

Serverリソースキットのemptyコマンドを単純に呼び出しているだけですが、ラストに、さっき作ったMEMコマンドを呼び出すようにしています。


↑EMPTYを実行すると、メインRAMがぐぐっと空いてくれるのが分かります。

クリーンナップした後は、MEMコマンドで確認・・・という流れです。

PowerShellは、Windows 10には必ず入っているシェルスクリプトですが、Pythonのように対話型のプログラミング言語という性質も持ち合わせていて、本当に凄いやつです。

JavaScriptとPowerShellは、パソコンを買ったら必ず使えるものなので嬉しいですね。