Filtrado de objetos de PowerShell con Where-Object – informaticamadridmayor

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.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *