執筆者: あんどう
最終更新: 2023/05/14
wsl --shutdown をGUIで叩く。GUIの方がめんどいわという人はこの記事の対象ではない。

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

ポチッとな!

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

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

そもそも作業中はコマンドを普通に叩くだろうから、なにか作業中にポチッとなすることは想定していない。これからゲームする時とかに使え。
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を追記し、あとポリシーを変える。

あとは検索すれば出てくるはずなので、スタートメニューにピン留めする。
https://shellgeek.com/powershell-get-memory-usage/
https://acoustic-groove2.hatenablog.com/entry/2018/01/29/233637
この人が書いた記事