La salida de cualquier cmdlet de PowerShell se devuelve como objetos. El Donde-Objeto El cmdlet se usa en PowerShell para filtrar dichos objetos. El cmdlet Where-Object le permite filtrar el resultado del comando anterior mediante una canalización. En este artículo, mostraremos cómo usar el cmdlet Where-Object en PowerShell.
Echemos un vistazo a un ejemplo simple del uso de Where-Object. Por ejemplo, necesitamos enumerar los servicios que se ejecutan en la computadora usando el cmdlet Get-Service. Para enumerar solo los servicios de Windows con un Corriendo status, use el siguiente comando con el filtro Where-Object:
Get-Service | Where-Object Status -eq "Running"
Puede mostrar todas las propiedades de cmdlet disponibles que se pueden usar como un filtro Where-Object con el comando:
Get-Service | Get-Member -MemberType *Property*
Hay dos alias para el cmdlet Where-Object: Where y «?» personaje. Los siguientes dos comandos de PowerShell son los mismos que el primer comando:
Get-Service | Where Status -eq "Running" Get-Service | ? Status -eq "Running"
Puede usar varias condiciones de filtro en el cmdlet Where-Object. Por ejemplo, necesitamos encontrar todos los servicios en ejecución que contengan las palabras Remoto o Política en Nombre para mostrar:
Get-Service | Where-Object {$_.Status -eq 'Running' -and $_.DisplayName -like 'Remote' -or $_.DisplayName -like '*Policy*'}
El número de condiciones para filtrar objetos puede ser ilimitado. Si necesita usar una lógica compleja en un filtro, limite las condiciones entre paréntesis:
Get-Service | Where-Object {($_.Status -eq 'Running') -and ($_.DisplayName -like 'Remote' -or $_.DisplayName -like '*Policy*')}
Compare los resultados de los dos últimos comandos.

Puede usar distintos operadores de condición en el cmdlet Where-Object (los nombres de los operadores que distinguen entre mayúsculas y minúsculas se muestran entre paréntesis):
- ecualizador (CEQ) — el valor es igual;
- NE (CNE) – no es igual;
- GT (CGT) — el valor es mayor que;
- LT (CLT) – menos que;
- LE (CLE) – Menos que o igual a;
- GE (CGE) — más o igual;
- Contiene (CContiene) — entrada de cadena;
- NoContiene (CNotContains) – ocurrencia en la propiedad;
- Partido (CPartido) — búsqueda de máscara de expresión regular;
- No coincide (C No coincide) — sin coincidencia por máscara en expresión regular;
- Me gusta (CMe gusta) — filtrar por máscara;
- No lo es — comúnmente usado para verificar tipos de datos ($array | donde {$_ -IsNot [int]}).
Por ejemplo, el siguiente comando enumerará los procesos en ejecución que usan más de 50 MB de RAM y los clasificará en orden descendente:
Get-Process | ? {$_.WorkingSet -GT 50000*1024}|select processname,@{l="Working Memory (MB)"; e={$_.workingset / 1mb}} |sort "Working Memory (MB)" -Descending

El cmdlet Where-Object es una poderosa herramienta de filtrado de PowerShell que resulta útil cuando necesita seleccionar objetos que coincidan con ciertos criterios de los objetos devueltos.

