Powershell – 11 – Scripting (1)

11.1- Introduccion.

Windows Powershell tambien pone a nuestra disposicion su propio lenguaje de scripting para crear secuencias de comandos en el estilo clasico de programacion imperativa.

No creo que haya que decirlo, pero para el que no lo sepa, me gusta mucho la programacion aunque, por motivos diversos de la vida, nunca he podido desempeñar esta funcion en el terreno laboral y es una pena que me corroe desde hace mucho tiempo.

Pues bien, con Windows Powershell se me abre una puerta que me es muy grata. Aunque salvando las distancias con un leguaje de programacion como Java, C++, etc… creo que, si no hay otra cosa, Windows Powershell puede darme muchas satisfacciones en este sentido y espero que tambien lo haga con alguno de vosotros.

Bien es cierto que ahora mismo no estoy capacitado para establecer el alcance del mismo, pero lo que voy descubriendo dia a dia me hace barruntar que podemos realizar un sinfin de tareas, que de otra manera serian muy laboriosas, de una forma facil y sencilla.

El lenguaje de Script que Powershell (PSL) pone a nuestra disposicion incluye variables, bucles, condicionales, funciones y manejo de errores. Por supuesto aun estoy empezando con el, osea que no he podido trabajar con todas estas caracteristicas aunque si con alguna de ellas.

Tengo que recordar que todos los tutoriales que llevo realizados hasta la fecha sobre Powershell y los que continuare realizando, estan basados en la version 1.0 del mimo. El apartado del lenguaje de Script no creo que sufra muchos cambios en versiones posteriores, osea que nos vamos a centrar en esta version.

A modo de comentario os dire, para que lo sepais, que este lenguaje de script no es algo creado desde cero, sino que esta «inspirado» en los lenguajes shell de Unix como PERL, PHP, PYTHON…

11.2- Obtener ayuda

Ya comente en otro tutorial anterior sobre el mismo tema la forma o formas de que disponemos para obtener ayuda sobre los diferentes cmdlets. Pues bien, tambien podemos obtener ayuda sobre algunos de las caracteristicas del lenguaje de script.

Por ejemplo, si queremos obtener ayuda sobre el bucle «for«, podemos escribir:

>get-help about_for

pwscrit101

Si escribimos:

>get-help about

pwscrit102

Nos mostrara la lista de todos los coumentos «about«.

Otra forma de ver estos documentos es desde el directorio «es» dentro de la ruta en que esta instalado Windows Powershell.

En mi caso es: «c:\windows\system32\windowspowershell\v1.0\es«

11.3- Separacion de comandos.

Cada linea en un script de Windows Powershell es un comando. Un comando puede contener varios cmdlets separados po el simbolo «|«.

Tambien podemos escribir varios comandos en una misma linea separandolos con «punto y coma» (;).

Cuando una linea de un comando es muy larga, podemos escribir el caracater «`» al final de la linea para indicar que en la siguente linea continua el comando. Osea, que no acaba ahi.

Ejemplo.

Get-Command | where-object `

{$_.Name -like «get-*»}

Este comando, aunque son dos lineas, se comportara como uno solo como podeis observar en la captura que viene a continuacion:

pwscrit103En el ejemplo anterior, he creado un script llamado «separacion.ps1» que contien las dos lineas que he escrito antes.

Ejecuto el script de la forma que se ve en la captura: «.\separacion.ps1» y ejecuta el comando que contiene el mismo.

Poco a poco, no nos agobiemos…

11.4- Comentarios

Los comentarios en WPS se escriben utilizando el simbolo de almoadilla (#). Todo lo que se encuentre despues de este caracter, no sera interprestado por Powershell.

Ejemplo

#Este es un comentario.

11.5- Variables

Las variables comienzan con el caracter «$«.

Las variables en WPS pueden contener letras, numeros e incluso el caracter de subrayado (_).

Las variables en WPS, como en todo lenguaje de programacion, pueden ser de varios tipos, pero por ahora y para no complicarnos en demasia la vida, que es bastante complicada, vamos a realizar scripts sencillos en los que obviaremos este tipo de caracteristicas, aunque, si se tercia, ya las comentaremos mas adelante, pero bastante mas adelante.

Ejemplo 1

Si queremos crear una variable que contenga el numero 23, haremos lo siguiente:

$numero = 23

o si queremos guardar una frase:

$frase = «Esta es una frase»

y para mostrar el contenido de la variable basta con especificarla junto con el caracter «$«.

$frase

Vale, para que nos quede mas claro este asunto en un script, creamos un fichero llamado «variables.ps1» cuyo contenido podemos ver en la siguiente captura:

pwscrit104Podemos tener alguan duda con la ultima linea. Pero no he hecho mas que concatenar dos variables para que veais que se puede hacer de forma sencilla. El resultado de este script lo podeis ver a continuacion:

pwscrit105Se entiende, ¿no?

Si teneis alguna duda, me la comentais.

Las variables seran validas en el ambito en el que han sido creadas o declaradas. Esto quiere decir que si hemos declarado una varible dentro de un bucle «for«, esta varible existira o estara accesible siempre que estemos dentro del bucle «for«, una vez que haya finalizado el bucle o antes de comenzarlo, esta variable no existira. ¡Queda claro, ¿no?!

11.5.2- Variables predefinidas

Windows Powershell dispone de muchas variables predefinidas tambien llamadas «variables integradas» o «variables internas«.

A continuacion os muestro algunas de estas «variables internas«:

$true                     Valor true.

$false                    Valor false.

$home                  El directorio home del usuario actual.

$pshome             Directorio de insalacion de windows powershell.

$host                      Informacion de instalacion del host.

$error                   Lista de los errores que han ocurrido desde que se ha iniciado WPS.

Para obtener una lista de todas las variables disponibles en la sesion actual de Windows Powershell, tanto las internas como las que hemos definido nostros mismos:

>get-childitem variable:*

pwscrit106

Y si lo que queremos es obtener todas las variable cuyo nombre comience por «p»:

>get-childitem variable:p*

pwscrit107

Pero para obtener informacion sobre las variables, disponemos de otro cmdlet «get-variable» que vamos a ver en siguiente articulo relacionado con scripting en Powershell.

Por ahora basta con que nos quedemos con que existe.

11.5.3 Constantes

Las constantes, como a sabremos, son un tipo de variables un poco especiales, ya que su contenido no cambia.

El comando a utilizar para crear una constante seria:

Set-Varible -name nombreconstante -option readonly -value contenido

Ejemplo

>set-variable -name Pi -option readonly -value 3.14

Observando que en este caso no hemos utilizado el caracter $. Con Set-Variable no lo utilizaremos.

Sin embargo, si queremos trabajar con la constante, si que tendremos que utilizarlo.

Para ver el contenido de la constante Pi, haremos igual que si fuera una variable:

>$Pi

pwscrit108Bueno, creo que por ahora es suficiente. En el proximo tutorial sobre este tema, seguiremos descubriendo mas caracteristicas para poder realizar scripts que nos sirvan para nuestra labor cotidiana.

Venga, a pasarlo bien!!

Otros articulos sobre Powershell:

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

Los comentarios están cerrados.