about_Arrays

Se aplica a: Windows PowerShell 2.0, Windows PowerShell 3.0, Windows PowerShell 4.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