7

在powershell命令下运行时我有以下结果,

PS C:\> Get-Process svchost

Handles  NPM(K)    PM(K)      WS(K) VM(M)   CPU(s)     Id ProcessName
-------  ------    -----      ----- -----   ------     -- -----------
    546      34    18528      14884   136    49.76    260 svchost
    357      14     4856       4396    47    18.05    600 svchost
    314      17     6088       5388    42    12.62    676 svchost
    329      17    10044       8780    50    12.98    764 svchost
   1515      49    36104      38980   454   232.04    812 svchost
    301      33     9736       6428    54     2.90    832 svchost
    328      26     8844       9744    52     4.32    856 svchost
    247      18     8144       9912    77    37.50    904 svchost
     46       5     1504        968    14     0.02   1512 svchost
    278      15     4048       5660    43     3.88   2148 svchost
     98      14     2536       2460    35     0.66   2504 svchost

在这里我试图计算PM(K)进程的总内存大小。我在我的 ps1 脚本文件中有以下行

get-process svchost | foreach {$mem=("{0:N2}MB " -f ($_.pm/1mb))}

它以以下格式提供输出

17.58MB 4.79MB 6.05MB 9.99MB 35.29MB 9.56MB 8.64MB 7.95MB 1.47MB 3.95MB 2.48MB

但我需要总大小作为单个值107.75MB

如何计算svchost进程的总使用内存大小?

谢谢

4

2 回答 2

11

您可以使用 Measure-Object cmdlet

$measure = Get-Process svchost | Measure-Object PM -Sum
$mem = ("{0:N2}MB " -f ($measure.sum / 1mb))
于 2013-08-27T11:44:31.883 回答
1

此外,您可以使用 += 语法计算整个集合的总大小

$mem = 0
Get-Process svchost | %{$mem += $_.pm}
"{0:N2}MB " -f ($mem/1mb)
于 2013-08-27T13:23:23.020 回答