2011-09-13 6 views
12

Si funciono con el comando siguiente en PowerShell, se volverá a mí un objeto con la suma de la propiedad WorkingSet:¿Cómo devuelvo solo la suma entera de Measure-Object en PowerShell?

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

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

Si quiero devolver sólo el valor Sum, la única forma que he encontrado de hacerlo es:

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

¿hay una manera de canalizar el comando original, a algún otro comando para que regrese el entero en un solo paso? Algo como esto:

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

Respuesta

12

Sí, utilizar Select-Object:

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

Select-Object se utiliza cuando se necesita sólo algunas de las propiedades del objeto original. Crea un nuevo objeto y copia las propiedades deseadas a la nueva.

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

En caso de tener que extraer el valor (de una propiedad), se utiliza el parámetro -expandProperty en lugar de -property:

Get-Process | Select-Object -expand ProcessName 

Tenga en cuenta que se puede calcular el valor devuelto:

get-process | Select-Object -property @{Name='descr'; Expression={"{0} - {1}" -f $_.ProcessName, $_.Handles }} 
6

Simplemente use paréntesis para encerrar el comando canalizado:

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

Como regla general, PowerShell trata cualquier elemento entre paréntesis como un objeto que puede referenciar por propiedades/métodos.

3

Otra forma:

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