Как вычислить и использовать память нескольких экземпляров одного процесса с помощью powershell?
у меня есть следующий результат при запуске ниже команды 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
здесь им пытаются calculte общий размер памяти 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
Как рассчитать общий объем памяти
2 ответов
можно использовать командлет Measure-Object
$measure = Get-Process svchost | Measure-Object PM -Sum
$mem = ("{0:N2}MB " -f ($measure.sum / 1mb))
кроме того, вы можете вычислить общий размер всей коллекции, используя синтаксис+=
$mem = 0
Get-Process svchost | %{$mem += $_.pm}
"{0:N2}MB " -f ($mem/1mb)