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.

powershell donde filtro de objetos

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

donde filtro de objetos en powershell

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.

Recomendado para ti