PowerShell: La importancia de la interacción usuario – máquina (Parte IV de X)

Windows Técnico

Sindicación

Proximos HOLs

Loading...

PowerShell: La importancia de la interacción usuario – máquina (Parte I de X)

PowerShell: La importancia de la interacción usuario – máquina (Parte II de X)

PowerShell: La importancia de la interacción usuario – máquina (Parte III de X)

En el anterior artículo se trataron las diferentes estructuras de control que se disponen en PowerShell. Hoy, se hablarán de los arrays y las tablas hash disponibles en la nueva línea de comandos. El uso de este tipo de estructuras puede simplificar y mucho el tratamiento de los datos en la shell de Microsoft.

El Array: ¿Lo de siempre?

El array es una estructura para coleccionar elementos. Cada elemento recibe una posición de memoria, por lo que el array puede verse como un vector o un número de posiciones de memoria seguidas que almacenan distintos elementos. Estos elementos reciben una posición para poder ser consultados o sobreescritos en el array.

Los arrays disponen de dimensiones, generalmente no pasan de 1 o 2 dimensiones, pero pueden tener N dimensiones. ¿Qué es una dimensión? Sencillamente indican el espacio para colocar y referenciar los elementos dentro de un array. Por ejemplo, un array de 1 dimensión, siempre será referenciado por el nombre de la variable y el índice de la posición del elemento. En un array de 2 dimensiones, ya nos encontramos con que hay que indicar fila y columna, es decir, son 2 índices lo que hay que indicar, y así sucesivamente.

Para declarar un array se utilizan distintas nomenclaturas, a continuación unos ejemplos sencillos:

PS C:\> [int[]]$array = 22,12,1986

PS C:\> $miArray2 = 1,2,3

PS C:\ > [int[][]]$miArray3 = @((14,22,2008),(1,2,3))

PS C:\ > $multiTipo = [int]1,[double]9

El primero de los ejemplos declara un array, en el cual se indica el tipo entero como elementos internos, y se inicializa con 3 valores. El segundo declara un array sin declarar el tipo, y se inicializa con 3 elementos. El tercer ejemplo declara un array de 2 dimensiones de tipo entero y lo inicializa con 2 dilas y 3 columnas. Para poder acceder a dicha información se puede ejecutar la variable $miArray3 sobre PowerShell o $miArray3[fila][columna] para acceder a un elemento concreto. En el último ejemplo, se rompe con la clásica definición de que un array es una estructura que solo almacena elementos del mismo tipo, es decir elementos homogéneos. En PowerShell se puede crear arrays multitipo, es decir, almacenan elementos de distintos tipos. En el último ejemplo se puede observar la declaración de un array que almacena como primer elemento un entero y como segundo elemento un real.

Para sobreescribir valores o añaidr valores a un array se disponen de las siguientes opciones:

$array[posicion] = <nueva valor>. Con esta instrucción, se sobreescribe un valor de una posición, siempre y cuando la posición se encuentre creada.

$array += <nuevo valor>. De esta forma se añade un nuevo valor al array en una nueva posición.

Captura de pantalla 2012-09-05 a la(s) 12.15.52

Figura 1: Declaración de array de 2 dimensiones y consultas

Las tablas hash: Dispersión en PowerShell

Una tabla hash o asociativa se encuentra implementada también en PowerShell. Es una colección de elementos a la cual no se accede mediante índice como era el caso de los arrays, sino que se accede mediante una clave o función hash. Esta clave proporciona la posición real en la tabla. En las tablas, y al igual que en los arrays, se pueden utilizar elementos heterogéneos.

El siguiente ejemplo ilustra la creación y acceso a las tablas hash:

PS C:\ > $tablaHash = @{hash1 = 22; hash2 = 1986}

PS C:\> $tablaHash

Name Value

---- -----

hash2 1986

hash1 22

PS > $tablaHash['hash1']

22

Si la clave tiene espacios, se debe especificar entre comillas simples. En la siguiente imagen se puede visualizar el ejemplo ejecutado en una PowerShell.

Captura de pantalla 2012-09-05 a la(s) 12.31.09

Figura 2: Declaración de tabla hash y asignación de valores

Hasta aquí el artículo de la serie de la importancia de la interacción usuario – máquina. En el próximo artículo se podrán atender conceptos de bucles, entre otros características interesantes de PowerShell.

Si quieres aprender más secretos, configuraciones, integraciones, desarrollo de PowerShell te recomendamos leer el libro de Pablo González y Ruben Alonso “PowerShell: La navaja suiza de los administradores de sistemas. Si quieres aprender mucho más sobre los secretos de lo sistemas Microsoft Windows, te recomendamos leer el libro de Sergio de los Santos “Máxima Seguridad en Windows: Secretos Técnicos y, por último, te recordamos que si te ha gustado el artículo puedes suscribirte al Canal RSS de Windows Técnico para estar al día de las novedades e información técnica de interés.

 

[ACTUALIZADO]: Descárgate la versión de evaluación final de Windows Server 2012 y comprueba todas las novedades del nuevo sistema operativo Servidor de Microsoft.

 

clip_image003


Enviado sep 05 2012, 12:40 por Pablo González

Comentarios

Windows Técnico escrito PowerShell: La importancia de la interacción usuario – máquina (V de X)
en 09-10-2012 14:14

PowerShell: La importancia de la interacción usuario – máquina (Parte I de X) PowerShell: La importancia

Windows Técnico escrito PowerShell: La importancia de la interacción usuario – máquina (V de X)
en 09-19-2012 18:27

PowerShell: La importancia de la interacción usuario – máquina (Parte I de X) PowerShell

Windows Técnico escrito PowerShell: La importancia de la interacción usuario - máquina (Parte VI de X)
en 10-01-2012 13:56

PowerShell: La importancia de la interacción usuario – máquina (Parte I de X) PowerShell: La importancia

Windows Técnico escrito PowerShell: La importancia de la interacción usuario - máquina (Parte VII de X)
en 10-31-2012 9:09

  PowerShell: La importancia de la interacción usuario – máquina (Parte I de X) PowerShell: La importancia

Añadir un comentario

(requerido)  
(opcional)
(requerido)  
Recordarme
If you can't read this number refresh your screen
Enter the numbers above: