Tuberías (Pipes)
Última actualización
Última actualización
En este nuevo artículo, estaremos hablando de las Tuberías (Pipes) en PowerShell. Las tuberías o también llamadas pipes, son un mecanismo poderoso para encadenar cmdlets y permite que la salida de un comando se utilice como la entrda de otro cmdlet. Esto permite gran flexibilidad y modularidad en la manipulación de datos.
En PowerShell, la tubería se representa con el símbolo |
(una barra vertical). Su función es tomar la salida de un cmdlet y pasarla directamente como entrada de otro cmdlet, permitiendo un procesamiento secuencial de datos.
PowerShell no pasa texto plano por la tubería, sino objetos que pueden ser manipulados de manera más estructurada. Por ejemplo, el cmdlet Get-Process
devuelve una lista de objetos Process
, que contienen varias propiedades, como son Name
, ID
, CPU
, entre otras.
A su vez, las tuberías permiten realizar selección y filtrado de datos. Cmdlets como Select-Object
y Where-Object
son comúnmente usados en tuberías para filtrar o seleccionar propiedades específicas de los objetos que se están pasando a través de la tubería.
Ejemplo:
Al momento de utilizar las tuberías en PowerShell debemos tener algunas consideraciones imporantes.
En primer lugar, como ya mencionamos anteriormente las tuberías pasan objetos entre los cmdlets, no texto plano. Esto quiere decir que podemos usar objetos en lugar de solo manipular cadenas de texto.
En cuanto al simbolo $_
, representa el objeto actual en el flujo de la tubería. Se utiliza dentro de los Cmdlets como ForEach-Object
y Where-Object
para acceder a las propiedades de los objetos en la tubería.
Además, podemos destacar la eficiencia de las tuberías. PowerShell permite lo que se llama el "procesamiento perezoso" (lazy evaluation) a través de las tuberías. Esto significa que los cmdlets de la tubería no procesan todos los objetos a la vez, sino que se procesan a medida que son necesarios. Esto mejora el rendimiento en el manejo de grandes volúmenes de datos.
Anteriormente dijimos que PowerShell maneja objetos de forma predeterminada, pero también podemos utilizar las tuberías con cmdlets que generan texto, como es el caso de Echo
o Write-Output
. Esto nos puede servir en caso de querer realizar operaciones de texto.
1..10
genera una secuencia de números del 1 al 10, lo que en PowerShell se utiliza para crear un rango. A continuación, mediante Where-Object { $_ % 2 -eq 0 }
filtramos esta secuencia para obtener solo los números pares (aquellos divisibles por 2 sin dejar residuo). Es importante recordar que la variable $_
hace referencia al objeto actual en el flujo de la tubería. La expresión $_ % 2 -eq 0
verifica si el número actual ($_
) es divisible por 2. Si la condición se cumple, el número se pasa a la siguiente etapa de la tubería.
El cmdlet Where-Object
se utiliza para filtrar objetos basados en condiciones específicas. Se emplea dentro de un pipeline para seleccionar solo los elementos que cumplen un criterio determinado.
La sintaxis básica es la siguiente:
Ejemplo:
Espero que los conceptos hayan quedado claros. Si aún persisten dudas después de llegar a este punto, te sugiero considerar la posibilidad de releer el artículo para reforzar tu comprensión.
Happy Hacking!