2016-11-22 8 views
2

Я использую следующий код, чтобы получить хром общего использования памяти в мегабайтахМатематические операции в трубопроводе

$usage = Get-Process | Where-Object {$_.Name -eq "chrome"} | Measure-Object -Sum -Property PrivateMemorySize 
"Total: " + $usage.Sum/1e+6; 

Как я могу сделать то же самое в одной строке? Я понял, как получить доступ к свойствам в конвейере, но я не знаю, как разделить его на 1e + 6.

Get-Process | Where-Object {$_.Name -eq "chrome"} | Measure-Object -Sum -Property PrivateMemorySize | select Sum 
+3

'(все-и-трубопроводный и-кухня-раковина) .sum/1e + 6'. –

+2

Или используя вычисленное свойство '(... | Select @ {Name = 'Total'; Expression = {$ _. Sum/1e6}}). Total' –

ответ

0

Альтернативное решение, которое использует истинные binary MB units (Mebibytes, [math]::Pow(2, 10*2) , 1,048,576 байт), а не decimal one s ([math]::Pow(10,6)/1e6, 1,000,000 байт)

"Total: $(((Get-Process 'chrome').PrivateMemorySize | measure -Sum).Sum/1mb)" 

(Заменить 1mb с 1e6, если вы действительно хотите использовать десятичных единиц.
Заметим, однако, что с точки зрения RAM - в отличие от массового хранения - binary units are still prevalent)

2

Чтобы получить именно то, что вы просили, использование:

((Get-Process | Where-Object {$_.Name -eq 'chrome'} | Measure-Object -Sum -Property PrivateMemorySize|% {$_.Sum}) /1e+6)|% {"Total: $_"} 
2

просто так :)

"Total: {0} " -f ((gps -Name "chrome" | Measure -Sum PrivateMemorySize).Sum/ 1e+6); 
Смежные вопросы