Как вернуть только целую сумму Measure-Object в PowerShell? - PullRequest
13 голосов
/ 14 сентября 2011

Если я выполню следующую команду в PowerShell, она вернет мне объект с суммой свойства WorkingSet:

PS > get-process chrome | measure-object WorkingSet -sum

Count    : 36
Average  :
Sum      : 2377129984
Maximum  :
Minimum  :
Property : WorkingSet

Если я хочу вернуть только значение Sum, единственноея нашел способ сделать это:

PS > $a = get-process chrome | measure-object WorkingSet -sum
PS > $a.Sum
2359980032

Есть ли способ передать исходную команду какой-то другой команде, чтобы я возвратил целое число за один шаг?Как то так:

PS > get-process chrome | measure-object WorkingSet -sum | {some other command}

Ответы [ 3 ]

13 голосов
/ 14 сентября 2011

Да, используйте Выбор объекта :

Get-Process chrome | Measure-Object WorkingSet -sum | Select-Object -expand Sum

Select-Object используется, когда нужны только некоторые свойства исходного объекта. Создает новый объект и копирует нужные свойства в новый.

Get-Process | Select-Object -property ProcessName, Handles

Если вам нужно извлечь значение (из одного свойства), вы используете параметр -expandProperty вместо -property:

Get-Process | Select-Object -expand ProcessName

Обратите внимание, что вы можете вычислить возвращаемое значение:

get-process | Select-Object -property @{Name='descr'; Expression={"{0} - {1}" -f $_.ProcessName, $_.Handles }}
9 голосов
/ 14 сентября 2011

Просто используйте круглые скобки, чтобы заключить переданную команду:

(get-process chrome | measure-object WorkingSet -sum).sum

Как правило, PowerShell обрабатывает все, что заключено в скобки, как объект, на который вы можете ссылаться с помощью свойств / методов.

4 голосов
/ 14 сентября 2011

Другой способ:

(get-process chrome | measure-object WorkingSet -sum).sum
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...