トップ画像
スタートメニューからWSLを終了させ、RAM使用率を表示

執筆者: あんどう

最終更新: 2023/05/14

作るもの

wsl --shutdown をGUIで叩く。GUIの方がめんどいわという人はこの記事の対象ではない。

例えばDocker DesktopやIDEを終了しても、WSLがかなりメモリを食っていたとする。

ポチッとな!

パソコンルームでブラクラを作っていた頃を彷彿とさせるプロンプトが出る。

はいを押すと立ち上がってるディストロが全部落ちる。ついでにRAM使用率も表示する。数字丸めるの忘れた。

そもそも作業中はコマンドを普通に叩くだろうから、なにか作業中にポチッとなすることは想定していない。これからゲームする時とかに使え。

VSCode設定変更

PowerShell拡張機能を入れる。

  "terminal.integrated.env.windows": {
    "PSExecutionPolicyPreference": "RemoteSigned"
  }

settings.json に上記を追記し、自作スクリプトを実行可能にする。

Add-Type -Assembly System.Windows.Forms

$result = [System.Windows.Forms.MessageBox]::Show("WSL全部終了する?","確認","YesNo","Question","Button2")

If($result -eq "Yes"){
    wsl.exe --shutdown
    # https://shellgeek.com/powershell-get-memory-usage/
    $CompObject = Get-WmiObject -Class WIN32_OperatingSystem
    $Memory = ((($CompObject.TotalVisibleMemorySize - $CompObject.FreePhysicalMemory)*100)/ $CompObject.TotalVisibleMemorySize)
    [void][System.Windows.Forms.MessageBox]::Show("現在のRAM使用率: " + $Memory + "%", "WSLを終了しました")
}
exit 0

VSCodeで上記のスクリプトを書き、適当な場所に保存する。

ただ、MessageBoxはShift-JISしか日本語を受け付けないっぽいので、エンコードを変えて保存し直す必要があると思う。

UTF-8で保存して日本語を出せる方法を誰か教えてくれ~

ショートカット作成

ショートカットを作成。分かりやすい名前を付ける。

ショートカットを無理やり追加

本当は上記ファイルをスタートメニューにぶちこみたいんだが、右クリックメニューにないしD&Dもできない。

仕方ないので %AppData%\Microsoft\Windows\Start Menu\Programs にショートカットを放り込む。

放り込んだショートカットのプロパティを開く。

powershell -ExecutionPolicy RemoteSigned -File "ps1ファイルのパス"

ただ単にps1ファイルへのショートカットになっているので、先頭にpowershellを追記し、あとポリシーを変える。

あとは検索すれば出てくるはずなので、スタートメニューにピン留めする。

参考

RAM取得する部分

https://shellgeek.com/powershell-get-memory-usage/

メッセージボックス

https://acoustic-groove2.hatenablog.com/entry/2018/01/29/233637

実行ポリシー

https://zenn.dev/nekocodex/articles/eb3403961ad9b966ff6e

取得に失敗しました

2021年度 入部

Twitter GitHub