Búsqueda de sitios web

PowerShell: Cómo filtrar una matriz de objetos por propiedad


A menudo, es posible que desee filtrar una serie de objetos en función de una propiedad específica en PowerShell.

Puede utilizar la siguiente sintaxis para hacerlo:

$players | Where-Object { $_.team -eq "Kings" }

Este ejemplo en particular filtra la matriz denominada $players para mostrar solo los objetos en la matriz donde la propiedad team es igual a "Kings".

Tenga en cuenta que también puede utilizar el comando ? como alias para el cmdlet Where-Object para un código más corto:

$players | ? { $_.team -eq "Kings" }

El siguiente ejemplo muestra cómo utilizar esta sintaxis en la práctica.

Ejemplo: cómo filtrar una matriz de objetos por propiedad en PowerShell

Primero, podemos usar la siguiente sintaxis para crear una matriz de objetos denominada $players que contiene información sobre cuatro jugadores de baloncesto diferentes:

$players = @(
[pscustomobject]@{team="Mavs";points=40;assists=12},
[pscustomobject]@{team="Kings";points=22;assists=7},
[pscustomobject]@{team="Hawks";points=25;assists=11},
[pscustomobject]@{team="Celtics";points=13;assists=9})

La siguiente captura de pantalla muestra cómo utilizar esta sintaxis en la práctica:

Ahora supongamos que nos gustaría filtrar la matriz para mostrar solo los objetos cuyo valor en la propiedad team es igual a "Reyes".

Podemos utilizar la siguiente sintaxis para hacerlo:

$players | Where-Object { $_.team -eq "Kings" }

La siguiente captura de pantalla muestra cómo utilizar esta sintaxis en la práctica:

Tenga en cuenta que esto solo devuelve el único objeto de la matriz donde la propiedad team es igual a "Reyes".

Tenga en cuenta que también puede filtrar utilizando valores numéricos si lo desea.

Por ejemplo, puede utilizar la siguiente sintaxis para filtrar la matriz y mostrar solo objetos donde el valor en la columna puntos sea inferior a 30:

$players | Where-Object { $_.points -lt 30 }

La siguiente captura de pantalla muestra cómo utilizar esta sintaxis en la práctica:

Tenga en cuenta que esto solo devuelve los objetos en la matriz donde el valor en la columna puntos es menor que ( -lt ) 30.

Siéntase libre de utilizar una sintaxis similar para filtrar los objetos de la matriz utilizando cualquier valor numérico que desee.

Artículos relacionados