- Windows PowerShell - Scripts - Array y Hashtable -

Un array es una lista de elementos, el cual se declara con la asignación de valores separados por comas.

$a = 15,25,36,48,76,33

Los array pueden declararse explícitamente con [array]

[array] $b
$b = 2,8,5

El array puede definirse con solo un elemento. Debe tenerse en cuenta que la lista debe estar precedida por una coma:

$c = ,"un solo elemento"
[array] $a = "solo un elemento"

Para listar un array puede utilizarse "Foreach-Object". Cuando un array se encuentre al final de un pipeline, este será listado. El atributo "Count" ofrece la cantidad de elementos que integran el array.

[array] $x
$x 3,6,7
$x.Count

Para acceder a los elementos, se establece un Index, comenzando con 0 o un espacio de Index, el cual debe estar encerrado entre corchetes ([ ]). El espacio de Index debe separarse con dos puntos (por ejemplo: $a[4..7]).
El operador "+=" completa un elemento al final de un array.
No es posible eliminar elementos de un array. De ser necesario, debe copiarse el mismo y dejar el/los valores en cuestión.
Es posible vincular dos array con el operador suma (+):

$DomainControllers = "C01", "C02", "C03"
$MemberServers = "C04", "C05", "C06"
$AllServers = $DomainControllers + $MemberServers
$AllServers.Count # Resultado 6!

Array multidimencionales son posibles encerrando los elementos entre paréntesis ( ). Ejemplo :

$DomainControllers = ("C01", "192.168.1.3", "Building 1"), ("C02", "192.168.1.4", "Building 2"), ("C03", "192.168.1.10", "Building 3")
"Number of Computers: " + $DomainControllers.Count
"IP Address of Computer 2: " + $DomainControllers[1][1] # 192.168.1.4
"Building of Computer 2: " + $DomainControllers[1][2] # Building 3
$DomainControllers += ("C04", "192.168.1.20", "Building 4")
"Building of Computer 4: " + $DomainControllers[3][2] # Building 4

Aquí vemos un array de dos dimensiones. La primera dimensión tiene un array de tres elementos. Es posible agregar elementos con el signo de suma (+).
Además de los array, WPS utiliza "hashtable" que consiste en una estructura de datos con 2 elementos, un identificador y un dato asociado.
En una hashtable, los elementos son identificados no por su posición, si no por una designación inequívoca.
Su concepto está fijado en la clase "System.Collection.Hashtable" de .NET.
Para la definición de una hashtable debe utilizarse el sigo de arroba (@), seguido de llaves ({ }) donde han de relacionarse los elementos.
Los elementos se separaran con punto y coma (;).
Cada elemento cuenta con un nombre y un valor, los cuales deben ser separados por un signo de igualdad (=).
El nombre de elemento no debe aparecer entre comillas (" ").
En el caso que se requiera explícitamente el nombre del tipo de dato, deberá utilizarse [Hashtable]

# Hashtable implícita
$Computers = @{C01 = "192.168.1.1"; C02 = "192.168.1.2"; C03 = "192.168.1.3"; }

# Hashtable explícita
[Hashtable] $Computers = @{ C01 = "192.168.1.1"; C02 = "192.168.1.2"; C03 = "192.168.1.3"; }
A un Hastabel puede accederse como se accede a cualquier otro array, sobre la notación con los corchetes ([ ]), pero también directamente, sobre el operador punto (.). Ejemplo:

# Get IP Address of Computer C01
$Computers["C01"]
$Computers.C01

Los elementos pueden describirse directamente

# Cambio de un elemento
$Computers.C01 = "192.168.1.21"

Un hashtable puede crearse sucesivamente.
Puede iniciarse con una lista vacía, representada con "@{ }". Ejemplo

# incorporar nuevo elemento
$Computers.C01 = "192.168.1.30"

# Iniciar la lista
$MoreComputers = @{ }
$MoreComputers.C07 = "192.168.1.35"
$MoreComputers.C08 = "192.168.1.36"
$MoreComputers.Count # Result = 2

Dos hashtable pueden vincularse como dos arrays. Esto funciona solo, cuando en las listas unificadas, los elementos no se repiten. De ocurrir esto (elementos repetidos), se producirá un error y el resultado será una lista vacía.

# unificar los Hashtable
$AllComputers = $Computers + $MoreComouters
$AllComputers.Count # Result = 6

Hashtable puede utilizarse no solo para listados de elementos, si no también, para estructuras de datos. Digamos, para recoger informaciones sobre un objeto

# descripción de un bolígrafo
$boligrafo = @{ Nombre="Colages"; Color="azul"; Pais="Ghana" }
$boligrafo.Nombre
$boligrafo.Color
$boligrafo.Pais

previo
Imprimir!
Ultima actualisación: Tue, 24 ▪ May ▪ 2011
próximo