Powershell – 12 – cmdlets para manejar variables

En el articulo anterior, en el cual comenzamos a ver un poco el tema de los scripts en Powershell ya comentamos un poco lo que son las variables y constantes. Ademas vimos algunos ejemplos.

En este articulo vamos a ver los diferentes cmdlets que tenemos disponibles en Windows Powershell 1.0 para trabajar con variables.

12.1- Get-Variable

Obtiene las variables de Windows Powershell de la consola actual. Podemos obtener los valores de las variables y filtrar las variables devueltas por nombre.

Parametros

-name <String[]>

Especifica el nombre de la variable.

-include <String[]>

Especifica unicamente aquellos elementos sobre los que actuara el cmdlet y excluye a todos los demas. Se permite el uso de caracteres comodin.

-exclude<String>

Omite los elementos especificados.

-valueonly <SwitchParameter>

Obtiene solo el valor de la variable o variables indicadas.

-scope <String>

Restringe las variables recuperadas al ambito especificado.

Ejemplo 1

>get-variable

pwsvariables01Obtiene todas las variables.

Ejemplo 2

>get-variable -name p*

pwsvariables02Obtiene las variables cuyo nombre comienza por «p«.

Ejemplo 3

>get-variable -name pshome -valueonly

pwsvariables03

Obtiene unicamente el valor de la variable «pshome«.

Si no hubiesemos especificado «-valueonly«, nos mostraria lo siguiente:

pwsvariables04

Ejemplo 4

>get-variable -include r*, h*, v* | format-list

Este comando nos muestra todas las variables cuyo nombre comienza por «r«, «h«, o «v«. El resultado se mostrara en formato de lista gracias a las redireccion que efectuamos al cmdlet «format-list«.

12.2- Set-Variable

Establece el valor de una variable. Podremos crear la variable si no existe ninguna con el nombre que le especificamos.

Parametros

-name <String[]>

Especifica el nombre de la variable

-include <String[]>

Especifica unicamente aquellos elementos sobre los que actuara el cmdlet y excluye todos los demas.

-exclude <String[]>

Especifica aquellos elementos sobre los que no actuara el cmdlet

-option <scopeitemoptions>

Cambia el valor de la propiedad options de la variable. Los valores validos son:

  • none:  ninguna opcion.
  • readonly:  no se puede modificar ni eliminar sin el parametro «-force«.
  • constant:  similar al anterior.
  • private:  solo esta visible en el ambito especificado en el parametro «-scope«.
  • allscope:  la variable se copia a todos los ambitos que se crean.

-description <String>

Nos permite facilitar una descripcion de la variable.

-value <object>

Valor que se va a asingnar a la variable.

-force <Switchparameter>

Lo usaremos para forzar la operacion que queramos llevar a cabo, como por ejemplo, modificar el valor de una constante.

Otros parametros:

-scope

-passthru

-whatif

-confirm

Ejemplo 1

>Set-Variable -name dia -value Domingo -description «dia festivo»

Con este comando creamos una nueva variable con el nombre «dia» cuyo valor es «Domingo» y su descripcion es «dia festivo«.

Para ver el contenido de esta variable que acabamos de crear, haremos lo siguiente tal y como hemos aprendido en el apartado anteriror:

>get-variable -name dia

pwsvariables06Para ver todas las propiedades de nuestra nueva variable podemos utilizar el cmdlet «format-list» para redireccionar la salida del anterior comando a este cmdlet de la siguiente manera:

>get-variable -name dia | format-list

pwsvariables07

Ejemplo 2

En este ejemplo vamos a crear una constante.

>set-variable -name omega -value 168 -description «valor de prueba» -option readonly

A continuacion, verificamos las propiedades de estanueva constante:

>get-variable -name omega | format-list

pwsvariables08

12.3- New-Variable

Por mas que lo reviso, no encuentro ninguna diferencia significativa entre este cmdlet y «set-variable«.

Por eso, podemos utilizar la descripcion que hemos realizado de «set-variable» para «new-variable«. Creo que son mas que similares. Yo diria que iguales.

12.4- Clear-Variable

Borra los datos almacenados en una variable, pero no elimina la variable. Como resultado, el nuevo valor de la variable es NULL (vacio).

Si se ha especificado un tipo de objeto o dato para la variable, clear-variable mantiene el tipo del objeto almacenado en la variable.

Parametros

-include <String[]>

Borra unicamente los elementos especificados. Se permite el uso de caracteres comodin.

-exclude <String[]>

Omite los elementos especificados.

-name <String[]>

Especifica el nombre de la variable que se va a borrar.

Otros parametros:

-scope <String>

-force <Switchparameter>

-passthru <Switchparameter>

-whatif

-confirm

Ejemplo 1

>get-variable dia | format-list

>clear-variable -name dia

>get-variable -name dia | format-list

Ya teniamos creada esta variable de un apartado anterior, osea que la aprovechamos.

En primer lugar, mostramos las propiedades de la variable «dia» mediante una redireccion a «format-list«.

Despues borramos el contenido de esta variable.

Por ultimo, mostramos todas las propiedades de dicha variable, comprobamos este resultado con el que nos dio antes de borrarla y vemos que la propiedad «value» ahora esta vacis, es decir NULL.

pwsvariables09

Se ve claro que la variable sigue exsistiendo aunque no tiene ningun valor, ¿no?

Ejemplo 2

Recordamos que creamos ha bien poco una constante llamada «omega«. Vamos a jugar un poco con ella…

En primer lugar intentamos borrarla o borrar su valor:

>clear-variable -name omega

Nos da un terrible error porque, si recordamos, las constantes no pueden cambiar de valor asi como asi. Para esto debemos utilizar el parametro «-force» como se muestra a continuacion:

>clear-variable -name omega -force

Ahora si!

Mostramos las propiedades de la variable «omega» para cerciorarnos que lo ha realizado correctamente.

>get-variable -name omega | format-list

pwsvariables10

Todo ha salido a la perfeccion. ¿contento?

Ejemplo 3

Continuando con el ejemplo anterior, ahora que la constante «omega» tiene valor NULL, vamos a asignarle otro valor.

Primero lo intentamos como si de una variable normal y corriente se tratase.

>set-variable -name omega -value omega2

Pues no. Nos da otro terrible error por que no podemos modificar el valor de una constante. Para hacerlo, debemos utilizar, igual que anteriormente hicimos, el parametro «-force«.

>set-variable -name omega -value omega2 -force

Ahora parece que si. Por lo menos no nos ha mostrado ningun mensaje de error. Lo comprobamos:

>get-variable -name omega | format-list

pwsvariables11

Pues si, ahora si que lo ha hecho bien.

12.5- Remove-Variable

Este cmdlet elimina una variable y su valor del ambito en el que esta definida, como la consola actual.

La diferencia entre este cmdlet y el anterior que hemos comentado (clear-variable) es que este si que elimina la variable completamente y no solo el valor, como hacia «clear-variable«.

No voy a explicar los parametros de este cmdlet por que es practicamente identico en cuanto a funcionamiento a «clear-varible«, y no vamos a repetir todo el rato lo mismo, que ya aburre, ¿que no?

Ejemplo 1

Vamos a aprovechar que aun disponemos de la variable «dia» que habiamos creado en otro apartado de este articulo para hacer este ejemplo. Eliminaremos la variable «dia» con «remove-item«. Pero antes, para estar seguros, vemos las propiedades de la misma.

>get-variable -name dia | format-list

Vemos que si que existe, aunque no tiene ningun valor.

Seguidamente procedemos a eliminarla.

>remove-variable -name dia

Todo bien, de momento. Aunque para estar seguros, hacemos una consulta de las propiedades de la variable a ver que nos dice…

>get-variable -name dia | format-list

Nos dice que no existe esta variable. Esto quiere decir, que se ha eliminado correctamente, que es lo que queriamos hacer.

Podeis ver todo el proceso en la siguiente captura de pantalla:

pwsvariables12

Ejemplo 2

Ahora vamos a intentar hacer lo propio con la otra variable, o mejor dicho, constante que habiamos creado anteriormente. Recordamos que la habiamos llamado «omega«.

Primero, para ponernos en situacion, hacemos una consulta de sus propiedades.

>get-variable -name omega | format-list

Vale, esta tiene de todo.

Ahora intentamos eliminarla como si fuera una variable normal:

>remove-variable -name omega

¡Anda! no podemos borrarla! Bueno, esto es normal porque para algo es una constante.

Para eliminarla utilizaremos el parametro «-force«.

>remove-variable -name omega -force

Ahora no nos muestra el mensaje de error de antes. ¿la habra eliminado?

Para estar seguros de esto, volvemos a realizar una consulta de sus propiedades.

>get-variable -name omega | format-list

¡Eso es! Nos dice que no existe. ¡Somos unos fenomenos!

Bueno, hasta aqui llega el tema correspondiente a los cmdlets que tenemos disponibles en Powershell para trabajar con variables.

No os pongais nerviosos por que ya estoy pensando en el siguiente articulo.

Venga, a pasarlo bien!!

Para ver mas articulos sobre powershell en el blog, puedes hacerlo en la pagina dedicada a Powershell.

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

Los comentarios están cerrados.