Подтвердить что ты не робот

Как вернуть только целочисленную сумму Measure-Object в PowerShell?

Если я запустил следующую команду в 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}
4b9b3361

Ответ 1

Да, используйте Select-Object:

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 }}

Ответ 2

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

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

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

Ответ 3

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

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