TEMA about_Arrays DESCRIPCIÓN BREVE Estructura de datos compacta para almacenar elementos de datos DESCRIPCIÓN DETALLADA Una matriz consiste en una estructura de datos para almacenar una colección de elementos de datos del mismo tipo. Windows PowerShell admite elementos de datos, como string, int (entero de 32 bits), long (entero de 64 bits), bool (booleano), byte y otros tipos de objetos de Microsoft .NET Framework . CREAR E INICIALIZAR UNA MATRIZ Para crear e inicializar una matriz, debe asignar varios valores a una variable. Los valores almacenados en la matriz están delimitados con una coma y separados del nombre de la variable por el operador de asignación (=). Por ejemplo, para crear una matriz denominada $A que contenga 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 con el operador de intervalo (..). Por ejemplo, para crear e inicializar una matriz llamada $B que contenga los valores del 5 al 8, escriba: $B = 5..8 Como resultado, la matriz $B contiene cuatro valores: 5, 6, 7 y 8. Cuando no se especifica el tipo de datos, Windows PowerShell crea cada matriz como una matriz de objetos (tipo: 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 con establecimiento inflexible de tipos (es decir, una matriz que pueda contener únicamente valores de un determinado tipo), convierta la variable como un tipo de matriz, por ejemplo, string[], long[] o int32[]. Para convertir una matriz, el nombre de la variable debe ir precedido de un tipo de matriz especificado entre corchetes. Por ejemplo, para crear una matriz de enteros de 32 bits denominada $ia y que contenga cuatro enteros (1500, 2230, 3350 y 4000), escriba: [int32[]]$ia = 1500,2230,3350,4000 Como resultado, la matriz $ia puede contener solo números enteros. Puede crear matrices que se conviertan en cualquier tipo compatible en Microsoft .NET Framework. Por ejemplo, los objetos que Get-Process recupera para representar procesos son del tipo System.Diagnostics. Process. Para crear una matriz de objetos de proceso con establecimiento inflexible de tipos, escriba el siguiente comando: [Diagnostics.Process[]]$zz = Get-Process Puede rellenar una matriz utilizando la salida de un cmdlet, una función o una instrucción. Por ejemplo, la instrucción siguiente crea una matriz que contiene los procesos que comienzan por las letras "co" y que se están ejecutando en el equipo actual: $LocalProcesses = get-process co* Si la instrucción obtiene un único proceso, la variable $LocalProcesses no será una matriz. Para asegurarse de que el comando cree una matriz, se utiliza el operador de subexpresión de matriz, @, como se muestra en el ejemplo siguiente: $LocalProcesses = @(get-process co*) Aunque el comando devuelva un único proceso, la variable $LocalProcesses es una matriz. Aunque tenga un solo miembro, es posible tratarla como cualquier otra matriz. Por ejemplo, se le pueden agregar otros objetos. Para obtener más información, vea about_Operators. LEER UNA MATRIZ Puede hacer referencia a una matriz mediante el nombre de variable correspondiente, como $A o $a. Windows PowerShell no distingue entre mayúsculas y minúsculas. Para mostrar todos los elementos de la matriz, se escribe su nombre. Por ejemplo: $a Es posible hacer referencia a los elementos de una matriz mediante un índice, con el inicio en la posición 0. El número de índice debe especificarse entre corchetes. Por ejemplo, para mostrar el primer elemento de la matriz $a, escriba: $a[0] Para mostrar el tercer elemento de la matriz $a, escriba: $a[2] Los números negativos se aplican desde el final de la matriz. Por ejemplo, "-1" hace referencia al último elemento de la matriz. Para mostrar los tres últimos elementos de la matriz, escriba: $a[-3..-1] No obstante, proceda con precaución cuando use esta notación. $a[0..-2] Este comando no hace referencia a todos los elementos de la matriz, solo al último elemento. Hace referencia a los elementos primero, último y penúltimo 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] El operador de suma (+) se puede usar para combinar un intervalo con una lista de elementos de una matriz. Por ejemplo, para mostrar los elementos de las posiciones de índice 0, 2 y del 4 al 6, escriba: $a[0,2+4..6] Para determinar cuántos elementos contiene una matriz, se combina el intervalo con la propiedad length de la matriz. Por ejemplo, para mostrar los elementos desde la posición de índice 2 al final de la matriz, escriba: $a[2..($a.length-1)] La propiedad length está establecida en -1 porque el índice comienza en la posición 0. Por tanto, en una matriz de tres elementos (1,2,3), el índice del tercer elemento es 2, uno menos que la longitud de la matriz. También se pueden usar construcciones de bucle, como bucles Foreach, For y While, para hacer referencia a los elementos de una matriz. Por ejemplo, para usar un bucle Foreach a fin de mostrar los elementos de la matriz $a, escriba: foreach ($element in $a) {$element} El bucle Foreach recorre la matriz en iteración y devuelve cada valor de ésta hasta llegar al final de la misma. El bucle For es útil cuando se usan contadores que aumentan mientras se examinan los elementos de una matriz. Por ejemplo, para devolver los valores de una matriz de forma alternada (es decir, uno sí y otro no) mediante un bucle For, escriba: for ($i = 0; $i -le ($a.length - 1); $i += 2) {$a[$i]} Puede usar un bucle While para mostrar los elementos de una matriz hasta que una condición definida deje de ser verdadera. Por ejemplo, para mostrar los elementos de la matriz $a mientras el índice de la misma sea inferior a 4, escriba: $i=0 while($i -lt 4) {$a[$i]; $i++} Para obtener información acerca de las propiedades y los métodos de una matriz, como la propiedad Length y el método SetValue, se usa el parámetro InputObject del cmdlet Get-Member. Cuando se canaliza una matriz a Get-Member, se muestra información acerca de los objetos de la matriz. Cuando se usa el parámetro InputObject, se muestra información acerca de la matriz. Para buscar las propiedades y métodos de la matriz $a, escriba: get-member -inputobject $a MANIPULAR UNA MATRIZ Es posible cambiar los elementos de una matriz, agregarle elementos y combinar los valores de dos matrices en una tercera. Para cambiar el valor de un elemento concreto de una matriz, se especifican el nombre de esta última y el índice del elemento que se desea cambiar. A continuación, se usa el operador de asignación (=) para especificar el nuevo valor del 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 siguiente ejemplo se cambia el segundo valor (posición de índice 1) de la matriz $a a 500: $a.SetValue(500,1) Puede anexar un elemento a una matriz existente mediante el operador +=. Este operador suma a un valor existente. Cuando el operador se aplica a un elemento de una matriz, aumenta el valor del elemento. Si el operador se aplica a la propia matriz, anexa el valor. Por ejemplo, para anexar un elemento con el valor 200 a la matriz $a, escriba: $a += 200 No resulta fácil eliminar elementos de una matriz, pero se puede crear una nueva que contenga únicamente 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, se usa el operador de suma (+). En el siguiente ejemplo se crean dos matrices, se las combina y, a continuación, se 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. Si se desea eliminar una matriz, se puede usar el cmdlet Remove-Item para eliminar la variable que contiene la matriz. El siguiente comando especifica el elemento "a" en la unidad Variable:. remove-item variable:a (Para obtener más información acerca de la unidad Variable:, vea el tema de Ayuda del proveedor Variable.) VEA TAMBIÉN about_Assignment_Operators about_Hash_Tables about_Operators about_For about_Foreach about_While