如何在PowerShell中对输出进行排序?

要在PowerShell中对输出进行排序,您需要使用Sort-Object Pipeline cmdlet。在下面的示例中,我们将从Get-Process命令中检索输出,然后根据内存和CPU使用率对它们进行排序。

示例

Get-Process | Sort-Object WorkingSet | Select -First 10

输出结果

Handles  NPM(K)    PM(K)      WS(K)     CPU(s)     Id  SI ProcessName
-------  ------    -----      -----     ------     --  -- -----------
      0       0       60          8                 0   0 Idle
    144       8     1840        232       0.14   8396   1 SkypeBackgroundHost
    514      26    19280        300       0.73  16872   1 Calculator
   1140      50    63584        464      15.86  10688   1 ksdeui
     53       3     1212        816       0.30    580   0 smss
    217      17     3432       1848      37.03  13272   1 ptim
    486      26     7404       2228     168.86  13732   1 ptsrv
     32       6     1636       2440       0.16   1092   0 fontdrvhost
     86       5      968       3620       0.00   1060   0 svchost
     85       6     1208       4104       0.59   4116   0 ibtsiva

在上面的示例中,输出以默认顺序升序存储,然后我们检索了前10个进程。

如果要以降序输出,则需要添加参数-Descending

示例

Get-Process | Sort-Object WorkingSet -Descending | Select -First 10

输出结果

Handles  NPM(K)    PM(K)      WS(K)     CPU(s)     Id  SI ProcessName
     -------  ------    -----      -----     ------     --  -- -----------
           0       0     3660     719552     544.86   2580   0 Memory Compression
         968     125  1132200     487196   6,867.28   4228   1 chrome
        1867     150   294740     332516   1,136.42  19036   1 WINWORD
        1137      46   446876     305092   2,470.48  14560   1 chrome
         583      38   309476     250312     755.97  15652   1 chrome
        3597     107   275080     226752  11,615.69  12712   1 chrome
         464      59   179012     172652   1,938.55  18732   1 chrome
         350      31   191756     157716     339.11   5952   1 chrome
         607      61   129380     156224     106.52   7712   1 Code
         536      31   186496     146176      35.81  10352   1 Code

同样,您也可以按升/降顺序对CPU和其他属性进行排序,如下例所示。

示例

Get-Process | Sort-Object CPU | Select -First 10
Get-Process | Sort-Object CPU -Descending | Select -First 10