🎩

【Windows 小ネタ】PowerShell で Linux の top のようにメモリ順に表示

2024/09/18に公開

PowerShell 7.4.5 で動作確認しています。

Solution

PowerShell で実直に記述

Function Top {
    while (1) {
        Clear-Host
        Get-Process | Sort-Object -Descending -Property PM -Top 10 | Format-Table
        Start-Sleep -Seconds 3
    }
}

デフォルトの Alias を使って linux っぽく

function Top {
    while (1) {
         clear
         ps | sort -d pm -t 10 | ft
         sleep 3
    }
}

とも書くことができます。

notepad $PROFILE.CurrentUserCurrentHost

などで起動プロファイルに貼り付け、保存して

& $PROFILE.CurrentUserCurrentHost

または

. $PROFILE.CurrentUserCurrentHost

で読み込むと top が使えるようになります。

$PROFILE.CurrentUserCurrentHost は PowerShell の起動時に実行される PowerShell プロファイルです。
詳細は以下を参照してください。
https://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.core/about/about_profiles

コア処理の実行例

PS C:\Users\sharl> Get-Process | Sort-Object -Descending -Property PM -Top 10 | Format-Table

 NPM(K)    PM(M)      WS(M)     CPU(s)      Id  SI ProcessName
 ------    -----      -----     ------      --  -- -----------
      0 3,989.95     710.53       0.00   11820   0 vmmemWSL
     61 1,515.49     132.54      62.05   31932   1 run
    103 1,388.84     299.90   3,969.91    4568   1 chrome
     55 1,094.65     538.38      20.61   24480   1 DQXGame
     57 1,048.54     258.93   1,881.98   19652   1 chrome
     39   754.32     470.54   1,799.89    3144   1 Slack
    293   683.52     641.77   1,065.28   15368   1 PhoneExperienceHost
     92   673.01     549.30   7,768.16   16984   1 chrome
     51   583.50     588.61     805.45    8348   1 chrome
    245   531.68     317.70     322.03    9960   1 explorer

https://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.management/get-process
https://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.utility/sort-object
https://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.utility/format-table

Discussion