PowerShell: cómo utilizar el objeto Where con múltiples condiciones
A menudo, es posible que desee utilizar el cmdlet Where-Object en PowerShell para filtrar un objeto en función de varias condiciones.
Puede utilizar los siguientes métodos para hacerlo:
Método 1: utilizar el objeto Where con el operador -and
$my_data | Where-Object { [int]$_.points -gt 20 -and [int]$_.assists -gt 7}Este ejemplo en particular filtra el objeto $my_data para mostrar solo las filas donde el valor en la propiedad puntos es mayor que 20 y el valor en las asistencias la propiedad es mayor que 7.
Método 2: utilizar el objeto Where con el operador -or
$my_data | Where-Object { [int]$_.points -gt 30 -or [int]$_.assists -gt 10}
Este ejemplo en particular filtra el objeto $my_data para mostrar solo las filas donde el valor en la propiedad puntos es mayor que 30 y el valor en las asistencias la propiedad es mayor que 10.
Los siguientes ejemplos muestran cómo utilizar cada método en la práctica con el siguiente archivo CSV guardado en la siguiente ubicación:
c:\users\bobbi\nba_data.csvAsí es como se ve el contenido de este archivo:
El archivo contiene tres columnas que muestran el equipo, los puntos y las asistencias de varios jugadores de baloncesto.
Ejemplo 1: Cómo utilizar el objeto Where con el operador -and
Podemos usar la siguiente sintaxis para usar el cmdlet Where-Object con el operador -and para filtrar los datos del archivo CSV y mostrar solo las filas donde está el valor en el La propiedad puntos es mayor que 20 y el valor en la propiedad asistencias es mayor que 7:
$my_file = "c:\users\bobbi\nba_data.csv"
Import-Csv $my_file | Where-Object { [int]$_.points -gt 20 -and [int]$_.assists -gt 7}
La siguiente captura de pantalla muestra cómo utilizar esta sintaxis en la práctica:
Observe que solo las filas que se muestran en el resultado cumplen las dos condiciones siguientes:
- El valor en la propiedad puntos es mayor que 20.
- El valor en la propiedad asistencias es mayor que 7.
Al utilizar el operador -and dentro del cmdlet Where-Object, especificamos que se deben cumplir ambas condiciones para que se muestre la fila.
Ejemplo 2: Cómo utilizar el objeto Where con el operador -or
Podemos usar la siguiente sintaxis para usar el cmdlet Where-Object con el operador -or para filtrar los datos del archivo CSV y mostrar solo las filas donde está el valor en el La propiedad puntos es mayor que 30 o el valor en la propiedad asistencias es mayor que 10:
$my_file = "c:\users\bobbi\nba_data.csv"
Import-Csv $my_file | Where-Object { [int]$_.points -gt 30 -or [int]$_.assists -gt 10}
La siguiente captura de pantalla muestra cómo utilizar esta sintaxis en la práctica:
Observe que cada una de las filas que se muestran en el resultado cumple al menos una de las siguientes condiciones:
- El valor en la propiedad puntos es mayor que 30.
- El valor de la propiedad asistencias es superior a 10.
Al utilizar el operador -or dentro del cmdlet Where-Object, especificamos que se debe cumplir al menos una condición para que se muestre la fila.


