Seleccione los valores de una propiedad en todos los objetos de una matriz en PowerShell

Resuelto Sylvain Reverdy asked hace 13 años • 5 respuestas

Digamos que tenemos una matriz de objetos $objetos. Digamos que estos objetos tienen una propiedad "Nombre".

Esto es lo que quiero hacer

 $results = @()
 $objects | %{ $results += $_.Name }

Esto funciona, pero ¿se puede hacer de mejor manera?

Si hago algo como:

 $results = objects | select Name

$resultses una matriz de objetos que tienen una propiedad Nombre. Quiero que $results contenga una serie de nombres.

¿Existe una mejor manera?

Sylvain Reverdy avatar Mar 03 '11 11:03 Sylvain Reverdy
Aceptado

Creo que podrías utilizar el ExpandPropertyparámetro de Select-Object.

Por ejemplo, para obtener la lista del directorio actual y solo mostrar la propiedad Nombre, se haría lo siguiente:

ls | select -Property Name

Esto todavía devuelve objetos DirectoryInfo o FileInfo. Siempre puede inspeccionar el tipo que llega a través de la canalización mediante la conexión a Get-Member (alias gm).

ls | select -Property Name | gm

Entonces, para expandir el objeto para que sea del tipo de propiedad que estás viendo, puedes hacer lo siguiente:

ls | select -ExpandProperty Name

En su caso, puede hacer lo siguiente para que una variable sea una matriz de cadenas, donde las cadenas son la propiedad Nombre:

$objects = ls | select -ExpandProperty Name
Scott Saad avatar Mar 03 '2011 05:03 Scott Saad

Como solución aún más sencilla, podrías utilizar:

$results = $objects.Name

Que debería llenarse $resultscon una matriz de todos los valores de propiedad 'Nombre' de los elementos en $objects.

rageandqq avatar Jul 24 '2014 15:07 rageandqq