PowerShell >_ Pipe (que no es lo mismo que pipa)

Hola de nuevo aprendices, tal y como dice el título, hoy hablaremos un poco de los Pipe ( | ). Por si alguien no se acuerda, los pipe ya los teníamos en los cmd de siempre… quien no ha escrito nunca un dir | more en su cmd, que levante la mano  🙂

Con los pipe en powershell podremos pasar los resultados de un comando a otro, pero como soy de los que piensan que se aprende caminando, veamos unos ejemplos y además aprenderemos algunas cosillas más.

Al ataque…..

Arrancamos nuestro PS y escribimos ls -Recurse | more … pero tenemos ls en powershell …. pues no… os acordáis en el post anterior comentamos el tema de los alias… si queréis saber que cmdlet ejecuta el alias ls ejecutad Get-Alias ls.

Como podéis ver, el resultado del ls -Recurse se lo hemos pasado a more para que lo muestre la información de forma paginada.

Perfecto peroooo…. no acabo de verlo claro….

Bueno no pasa nada vamos a ver otros ejemplos,  veamos el cmdlet get-process que nos sirve para ver los procesos, y supongamos que queremos que el resultado se nos muestre ordenado por nombre de proceso…. 

Por si no os habéis dado cuenta, el alias sort pertenece al cmdlet Sort-Object y si miráis la ayuda veréis que lo que estamos haciendo es ordenar el objeto (resultado) por la propiedad ProcessName, OJO, estamos interactuando con objetos, no con texto y esto nos da una flexibilidad que con un cmd no tenemos… ALEGRÍA

Veamos otro ejemplo, pero aquí vamos a introducir alguna cosilla más… veamos…

1..5 significa que estamos definiendo un rango desde el 1 al 5. El cmdlet foreach nos permite realizar una operación para cada elemento de una colección, en nuestro ejemplo la colección es del 1 al 5, y la operación que realizaremos es ( Write-Host ) escribir el valor de la colección, un guión y hola, tal y como se puede ver en el resultado. Aquí os comento una cosita, foreach tiene un alias que es el % con lo que si en lugar de escribir foreach escribimos % el resultado será el mismo, aquí os lo demuestro:

Veamos otro ejemplo, volvemos con Get-Process:

Get-Process | Where-Object {$_.Name -match “iexpl”}

Esta vez hemos realizado un filtrado el objeto resultante del cmdlet get-process cuya Propiedad.ProcessName es “iexpl”.

Como véis, y aunque no lo parezca hoy hemos visto varias cosas de powershell, desde el PIPE – objetivo de este post – , pasando por cmdlets como get-process, ls, sort, write-host y como “matchear” resultados, así como definir un rango de datos númericos de forma sencilla.

Espero que os haya gustado, como siempre si tenéis alguna duda o consulta los comentarios del post estan abiertos…. y no mordemos 😀

 

 

Deja un comentario

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