Powershell – 5 – Tuberias y redireccion

5.1- Tuberias o canalizacion.

Esto seguro que os suena a todos los que tengais algun conocimiento de linux, ¿que no?

Al igual que linux, Powershell permite combinar dos o mas comandos en uno solo. Tuberia o canalizacion, cualquiera de ellos nos sirve para entendernos.

Cuando se combinan comandos en una canalizacion, se pasan datos entre si en forma de objetos. El primer comando devuelve uno o mas objetos a traves de la canalizacion al segundo comando. El segundo comando procesa estos objetos y a continuacion pasa objetos nuevos o revisados al tercer comando. Este proceso continua hasta que se hayan ejecutado todos los comandos de la canalizacion.

Para encadenar comandos en una canalizacion, tenemos que especificar cada comando en el orden que tiene que ejecutarse. Los comandos los separamos entre si con el simbolo («|» barra vertical). Los comandos se ejecutaran de izquierda a derecha.

Ejemplo 1:
>get-help * | get-help -detailed

El primer comando nos mostraria toda la ayuda, pero le pasamos el resultado al segundo comando y al final nos mostrara toda la ayuda, pero detallada. Ya se que no es un buen ejemplo pero como todavia no hemos visto otros cmdlets… No os preocupes que esto lo vamos a utilizar mucho a partir de ahora.

Ejemplo 2:

>get-command -verb set | get-help -examples

Si pensamos un poco con detenimiento vemos que el primer comando nos mostraria los comandos cuyo verbo fuese «set«. Vale, ahora le pasamos esta lista al segundo comando que hace que nos muestre la ayuda, pero solo el apartado «examples» de cada una.

Si juntamos todo esto tenemos que finalmente nos mostrara por pantalla el apartado «examples» de la ayuda solo de aquellos cmdlets cuyo verbo sea «set«.

5.2- Redireccion:

Redireccion de la salida desde Windows Powershell a archivos de texto.

De manera predeterminada, Powershell dirige la salida de comandos a la pantalla de Powershell. De todas formas, podemos modificar este comportamiento dirigiendo la salida a un archivo de texto.

Para hacer esto, tenemos que utilizar el simbolo «mayor que» (>) y el nombre del archivo al final.

Ejemplo 1:

>get-help -detailed get-command > c:\power\docs\get-command.txt

Esto comando crea un fichero de texto en la ruta especificada cuyo contenido es la ayuda del cmdlet get-command de Powershell.

Ahora podemos revisar el fichero todas las veces que queramos e incluso imprimirlo si es nuestro deseo.

Ejemplo 2:

>get-command -verb get > c:\power\listadoget.txt

Crea un fichero de texto cuyo contenido es el listado de todos los cmdlets de powershell cuyo verbo coincida con «get«.

5.3- Anexar:

Al redireccionar la salida a un fichero de texto, si este fichero ya existe, se eliminara lo que habia en el para introducir el nuevo texto que le enviamos.

Si no queremos hacer esto y lo que queremos es añadir nuevos datos al fichero, utilizaremos el simbolo «>>«. con esto la salida que le enviamos se añadira al final del fichero.

Ejemplo 1:

> get-command *file > c:\power\listadofile.txt

Con esto creamos un fichero de texto que contiene:

Ahora vamos a añadir a este fichero, otro listado:

>get-command *item >> c:\power\listadofile.txt

Y vemos el resultado en el fichero de texto:

Se nota el añadido, ¿no?

Bueno, pues por hoy ya hemos tenido bastante, otro dia mas…

A pasarlo bien!!

Otros articulos sobre Powershell:

Oscar Abad
http://www.xulak.com – Consultoría informática