about_Arrays
Se aplica a: Windows PowerShell 2.0, Windows PowerShell 3.0
Insertar la introducción aquí.
TEMA
about_Arrays
DESCRIPCIÓN BREVE
Describe las matrices, que son estructuras de datos diseñadas para almacenar colecciones de elementos.
DESCRIPCIÓN LARGA
Una matriz es una estructura de datos que está diseñada para almacenar una colección de elementos. Los elementos pueden ser del mismo tipo o de tipos diferentes.
A partir de Windows PowerShell® 3.0, una colección con cero objetos o uno tiene algunas propiedades de las matrices.
CREACIÓN E INICIALIZACIÓN DE UNA MATRIZ
Para crear e inicializar una matriz, asigne varios valores a una variable. Los valores almacenados en la matriz se delimitan con una coma y se separan del nombre de la variable mediante el operador de asignación (=).
Por ejemplo, para crear una matriz llamada $A que contiene los siete valores numéricos (int) 22, 5, 10, 8, 12, 9 y 80, escriba:
$A = 22,5,10,8,12,9,80
También puede crear e inicializar una matriz mediante el operador de intervalo (..). Por ejemplo, para crear e inicializar una matriz llamada "$B" que contiene los valores 5 y 8, escriba:
$B = 5..8
Como resultado, $B contiene cuatro valores: 5, 6, 7 y 8.
Cuando no se especifica ningún tipo de datos, Windows PowerShell crea cada matriz como una matriz de objetos (tipo: System.Object[]). Para determinar el tipo de datos de una matriz, use el método GetType(). Por ejemplo, para determinar el tipo de datos de la matriz $a, escriba:
$a.GetType()
Para crear una matriz fuertemente tipada, es decir, una matriz que puede contener solo valores de un tipo determinado, convierta la variable en un tipo de matriz, como string[], long[] o int32[]. Para convertir una matriz, anteponga al nombre de variable un tipo de matriz entre corchetes. Por ejemplo, para crear una matriz de enteros de 32 bits denominada $ia que contiene cuatro enteros (1500, 2230, 3350 y 4000), escriba:
[int32[]]$ia = 1500,2230,3350,4000
Como resultado, la matriz $ia solo puede contener números enteros.
Puede crear matrices convertidas para cualquier tipo admitido en Microsoft .NET Framework. Por ejemplo, los objetos que recupera Get-Process para representar procesos son del tipo System.Diagnostics.Process. Para crear una matriz de objetos de proceso fuertemente tipada, escriba el siguiente comando:
[Diagnostics.Process[]]$zz = Get-Process
EL OPERADOR DE SUBEXPRESIÓN DE MATRIZ
El operador de subexpresión de matriz crea una matriz, aunque esta contenga cero objetos o solo uno.
La sintaxis del operador de matriz es la siguiente:
@( ... )
Puede usar el operador de matriz para crear una matriz con cero objetos o solo uno.
PS C:\>$a = @("One")
PS C:\>$a.Count
1
PS C:\>$b = @()
PS C:\>$b.Count
0
Este operador de matriz es especialmente útil en scripts con los que recibe objetos, pero no sabe cuántos objetos serán.
PS C:\> $p = @(Get-Process Notepad)
Para obtener más información sobre el operador de subexpresión de matriz, consulte about_Operators.
LEER UNA MATRIZ
Puede hacer referencia a una matriz mediante su nombre de variable. Para mostrar todos los elementos de la matriz, escriba el nombre de la matriz. Por ejemplo:
$a
Puede hacer referencia a los elementos de una matriz mediante un índice, comenzando en la posición 0. Escriba el número del índice entre corchetes. Por ejemplo, para mostrar el primer elemento en la matriz $a, escriba:
$a[0]
Para mostrar el tercer elemento en la matriz $a, escriba:
$a[2]
Los números negativos se calculan desde el final de la matriz. Por ejemplo, "-1" se refiere al último elemento de la matriz. Para mostrar los tres últimos elementos de la matriz, escriba:
$a[-3..-1]
Sin embargo, tenga cuidado al usar esta notación.
$a[0..-2]
Este comando no hace referencia a todos los elementos de la matriz, solo al último. Hace referencia al primer, último y penúltimo elemento de la matriz.
Puede usar el operador de intervalo para mostrar un subconjunto de todos los valores de una matriz. Por ejemplo, para mostrar los elementos de datos en las posiciones de índice del 1 al 3, escriba:
$a[1..3]
Puede usar el operador más (+) para combinar un intervalo con una lista de elementos de una matriz. Por ejemplo, para mostrar los elementos en las posiciones de índice 0, 2 y del 4 al 6, escriba:
$a[0,2+4..6]
Para determinar cuántos elementos están en una matriz, use la propiedad Length o su alias Count.
$a.Count
También puede usar construcciones en bucle, como los bucles ForEach, For y While para hacer referencia a los elementos de una matriz. Por ejemplo, para usar un bucle ForEach para mostrar los elementos de la matriz $a, escriba:
foreach ($element in $a) {$element}
El bucle Foreach procesa una iteración en la matriz y devuelve todos los valores de la matriz hasta llegar a su final.
El bucle For es útil cuando se incrementan los contadores al examinar los elementos de una matriz. Por ejemplo, para usar un bucle For para devolver todos los demás valores de una matriz, escriba:
for ($i = 0; $i -le ($a.length - 1); $i += 2) {$a[$i]}
Puede usar un bucle While para mostrar los elementos en una matriz hasta que ya no se cumpla una condición definida. Por ejemplo, para mostrar los elementos de la matriz $a mientras el índice de matriz es inferior a 4, escriba:
$i=0
while($i -lt 4) {$a[$i]; $i++}
OBTENCIÓN DE LOS MIEMBROS DE UNA MATRIZ
Para obtener las propiedades y métodos de una matriz, como la propiedad Length y el método SetValue, use el parámetro InputObject del cmdlet Get-Member.
Al canalizar una matriz a Get-Member, Windows PowerShell envía los elementos de uno en uno y Get-Member devuelve el tipo de cada elemento de la matriz (ignorando los duplicados).
Cuando se usa el parámetro InputObject, Get-Member devuelve los miembros de la matriz.
Por ejemplo, el comando siguiente obtiene los miembros de la matriz en la variable $a.
Get-Member -InputObject $a
También puede obtener los miembros de una matriz escribiendo una coma (,) antes del valor que se canaliza al cmdlet Get-Member. La coma convierte a la matriz en el segundo elemento de una matriz de matrices. Windows PowerShell canaliza las matrices de una en una y Get-Member devuelve los miembros de la matriz.
,$a | Get-Member
,(1,2,3) | Get-Member
MANIPULACIÓN DE UNA MATRIZ
Puede cambiar los elementos de una matriz, agregar un elemento a una matriz y combinar los valores de dos matrices en una tercera matriz.
Para cambiar el valor de un elemento determinado de una matriz, especifique el nombre de la matriz y el índice del elemento que desea cambiar y, a continuación, use el operador de asignación (=) para especificar un nuevo valor para el elemento. Por ejemplo, para cambiar el valor del segundo elemento de la matriz $a (posición de índice 1) a 10, escriba:
$a[1] = 10
También puede usar el método SetValue de una matriz para cambiar un valor. En el ejemplo siguiente se cambia el segundo valor (posición de índice 1) de la matriz $a a 500:
$a.SetValue(500,1)
Puede usar el operador += para agregar un elemento a una matriz. Cuando se usa, en realidad, Windows PowerShell crea una nueva matriz con los valores de la matriz original y el valor agregado. Por ejemplo, para agregar un elemento con un valor de 200 a la matriz en la variable $a, escriba:
$a += 200
No es fácil eliminar elementos de una matriz, pero puede crear una nueva matriz que contenga solo los elementos seleccionados de una matriz existente. Por ejemplo, para crear la matriz $t con todos los elementos de la matriz $a excepto el valor de la posición de índice 2, escriba:
$t = $a[0,1 + 3..($a.length - 1)]
Para combinar dos matrices en una sola, use el operador más (+). En el siguiente ejemplo crea dos matrices, las combina y, a continuación, muestra la matriz combinada resultante.
$x = 1,3
$y = 5,9
$z = $x + $y
Como resultado, la matriz $z contiene 1, 3, 5 y 9.
Para eliminar una matriz, asigne un valor de $null a la matriz. El siguiente comando elimina la matriz en la variable $a.
$a = $null
También puede usar el cmdlet Remove-Item, pero asignar un valor $null es más rápido, especialmente para matrices de gran tamaño.
MATRICES DE CERO O UNO
A partir de Windows PowerShell 3.0, las colecciones de cero objetos o uno tienen las propiedades Count y Length. Además, puede indizar una matriz de un objeto. Esta característica le ayuda a evitar los errores de scripts que se producen cuando un comando que espera una colección obtiene menos de dos elementos.
Los siguientes ejemplos muestran esta característica.
#Zero objects
$a = $null
$a.Count
0
$a.Length
0
#One object
$a = 4
$a.Count
1
$a.Length
1
$a[0]
4
$a[-1]
4
VEA TAMBIÉN
about_Assignment_Operators
about_Hash_Tables
about_Operators
about_For
about_Foreach
about_While