| Artículos | 01 MAR 2010

PowerShell (y III)

Tags: Histórico
Revivir DOS en Windows
Juan Blázquez.
La potencia y flexibilidad que ofrece esta herramienta frente a otras consolas y utilidades viene marcada por los objetos que trata y cómo los maneja. Variables, operadores e instrucciones de control destacan cómo parte de esos componentes diferenciadores y centra la atención de esta entrega sobre PowerShell.

Un script de Windows PowerShell poco se diferenciaría de un archivo .bat de toda la vida si la nueva shell no fuera capaz de manejar un catálogo de entidades más amplio que CMD. Y uno de esos objetos que marca la diferencia son las variables. En Windows PowerShell las variables tienen la misma función y significado que en otras plataformas y lenguajes de programación: contienen valores. Son objetos que almacenan datos que son utilizados en los cálculos que se producen en la secuencia de instrucciones que se ejecutan en los scripts. Bien como valores temporales, valores intermedios. Bien como valores definitivos, resultado final de un proceso realizado. Son objetos que permiten obtener información del sistema y también posibilita interactuar con él de forma precisa y fiable. Nada tiene que ver la definición y manejo de variables en PowerShell con el tratamiento que para estos elementos se puede hacer en la consola CMD.
A diferencia de otros entornos de programación, en PowerShell, para trabajar con estos objetos, no hay necesidad perentoria de aprender una clasificación según el tipo de dato que puede almacenar o donde se pueden manipular. No es imprescindible saber y hacer variables temporales o globales, como tampoco es imprescindible tener conocimientos precisos sobre variables tipo carácter, numérico entero o numérico doble. Importa saber lo que se maneja, para hacer mejores scripts, pero empezar a manejar variables en esta shell sólo requiere saber cómo y quién define las variables. Esto es así por la flexibilidad de diseño de Windows Power–Shell, que no sigue un esquema rígido para tratar estos objetos, a menos que se indique otra cosa en su definición. A una variable se le puede asignar cualquier tipo de dato, siendo la propia shell quien se preocupa automáticamente de aplicar el tratamiento que le corresponda por su naturaleza. Así, la misma variable puede contener en un momento dado el valor numérico “4”, a continuación se le puede asignar la cadena de texto “cuatro” y acto seguido contener una fecha. PowerShell sabe distinguir las peras de las manzanas y los intentos de operación con datos de distinto tipo fracasan, con el consiguiente fallo en tiempo de ejecución. PowerShell reportará error si se intenta sumar una variable con el valor numérico 4 con otra cuyo valor es el texto “cuatro”, aunque no se haya declarado su tipo con anticipación.

Tipos de variables en PowerShell
En PowerShell se pueden manejar dos tipos de variables. Las de sistema y las de usuario. Las primeras son variables que hacen referencia a datos que maneja el sistema en el que se ejecutan las instrucciones y cubren tres áreas de su operativa. Las variables de estado, guardan, como su propio nombre indica, información sobre el estado de PowerShell, como puede ser la variable $?, que contiene el valor True, cierto, si la última operación se ha realizado correctamente. Y False, falso, si no ha sido así. Las de preferencia, tienen como razón de ser almacenar datos sobre el entorno de trabajo del usuario que accede a la shell. Sus preferencias, su configuración de la consola. Como puede ser la variable $MaximumDriveCount, el número máximo de unidades disponibles sin contar con las de sistema operativo. Y las variables de entorno sirven para mantener información sobre el sistema operativo. La variable que almacena como información la ubicación de la carpeta de instalación de Microsoft Windows, es un ejemplo de este tipo.
El concepto y uso de unidades, así como las variables de entorno, fueron ya tratadas en una anterior entrega. Las variables de usuario, por su parte, son aquellas que define el programador u operador, según sea por script o en prompt, para contener los datos que él estime necesitar en cada momento para la finalidad del proceso que quiere llevar a cabo. Como podría ser la variable “Disco_libre”, donde calcular el espacio en disco disponible, por ejemplo. De estas variables, salvo las de estado, todas son accesibles por el usuario y pueden ser modificadas según sus necesidades. Las de preferencia se modifican de forma indirecta, cuando el usuario define su entorno de trabajo. Las de usuario según la secuencia de proceso y las de estado, las mantiene dinámicamente Windows PowerShell. Eso sí, interesa saber que las variables pueden contener un único valor o contener varios. Variables escalares y variables matriz. Estas últimas pueden asimilarse a una tabla, donde los distintos valores se almacenan independientemente unos de otros, en celdas. Es una variable que agrupa a otras variables. Por ejemplo, se puede guardar en una variable el listado de los archivos que hay en un directorio. PowerShell, compartimentaría la variable con tantas “celdas” como ficheros hubiera y, en cada una de ellas, guardaría el nombre de un archivo.

Contexto
El manejo de variables en PowerShell está sujeto a una operación similar a la que se puede realizar en cualquier entorno de programación. Se pueden crear variables, asignarles valor, operar dichos valores y eliminarlas. La creación de variables de usuario, las de sistema ya se encuentran definidas y poco pueden manipularse, puede seguir dos caminos.
Se puede crear la variable directamente, con sólo indicar el nombre de la variable, precedido del símbolo $. Es decir, la instrucción $Disco_libre, crea o, si se prefiere, declara, una variable con ese nombre que no tendrá en un primer momento ningún valor. No necesita inicializarse. Como nombre de la variable puede contener cualquier carácter alfanumérico, incluido el símbolo de subrayado, lo que permite utilizar nombres de objeto descriptivos, que contribuyen, de gran manera, a una mejor legibilidad de los scripts. Este método directo de creación de variables, lo que hace es obviar el cmdlet específico que hay en PowerShell para esta operación: New-Variable [variable].
El método indirecto es un cmdlet presentado en su mínima expresión para crear estos objetos en bruto, pero que acepta un buen número de argumentos para que las variables puedan perfilarse con detalle en sus propiedades y uso, como cuál es el ámbito de dicha variable –scope [rango], que puede llegar ser “global”, “local” o “script”, según su visibilidad. O colocar una descripción con la que mejor identificar su propósito y validez, -description [texto]. Conviene consultar la ayuda para este comando para averiguar más detalles sobre argumentos y uso. Como se ve, no es necesario aprender mucha teoría para comenzar a manejar variables en esta consola.

Asignación de valores
Cuando lo que se necesita es asignar un valor, está disponible el cmdlet Set-Variable [variable] [valor], que asigna el dato consignado en [valor], a la variable [variable]. Que también sirve para crearla, en el caso que la variable indicada no exista, por lo que si se utiliza este comando, conviene revisar la sintaxis de la instrucción a fin de evitar fallos de “digitalización” y quebraderos de cabeza al manejar objetos que pueden parecer iguales, pero que para esta consola resultan diferentes. La nomenclatura mostrada es la

Contenidos recomendados...

Comentar
Para comentar, es necesario iniciar sesión
Se muestran 0 comentarios
X

Uso de cookies

Esta web utiliza cookies técnicas, de personalización y análisis, propias y de terceros, para facilitarle la navegación de forma anónima y analizar estadísticas del uso de la web. Consideramos que si continúa navegando, acepta su uso. Obtener más información