如果我在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}
答案 0 :(得分:13)
是的,请使用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 }}
答案 1 :(得分:9)
只需使用括号括起管道命令:
(get-process chrome | measure-object WorkingSet -sum).sum
通常,PowerShell将括在括号中的任何内容视为可以通过属性/方法引用的对象。
答案 2 :(得分:4)
另一种方式:
(get-process chrome | measure-object WorkingSet -sum).sum