Matrices PowerShell: cómo crearlas y usarlas


Las variables son la estructura de datos más básica en cualquier tipo de codificación. Pero las variables individuales no son suficientes para la mayoría de los propósitos, especialmente cuando se trata de algoritmos más complejos.

Ahí es donde entran las matrices. Ya sea C++ o Pitón, las matrices están presentes en todos los lenguajes de programación de alguna forma. Pero ¿qué pasa con Windows PowerShell? ¿Cómo funcionan las matrices de PowerShell? ¿Cómo los usas? ¿Cuál es su sintaxis? Averigüemos.

Matrices PowerShell 101

En pocas palabras, una matriz es solo una colección estructurada de variables. La idea es eliminar la molestia de realizar un seguimiento de docenas de nombres al contraer variables relacionadas en un conjunto numerado.

En PowerShell, puede crear una variable anteponiendo el símbolo $ al nombre de la variable. Por ejemplo:

$prime = 13

La variable puede contener cualquier tipo de datos, desde números hasta cadenas. Sólo necesitas usar comillas dobles o simples para especificar una cadena.

$nombre = “Levin”

Ahora, para crear una nueva matriz, simplemente asigne múltiples valores a la misma variable, separados por comas. Así:

$semana = “lunes”, “martes”, “miércoles”, “jueves”, “viernes”, “sábado”, “domingo”

Algunas personas prefieren convertir explícitamente una variable en una matriz para evitar confusión, aunque eso no es necesario. Para hacer esto, coloque los valores entre paréntesis precedidos por el símbolo @.

$semana = @(“lunes”, “martes”, “miércoles”, “jueves”, “viernes”, “sábado”, “domingo”)

Esto suele resultar útil cuando se intenta colocar la salida de otros comandos en una matriz, donde no se pueden escribir manualmente en el formato correcto.

Creando una matriz

Ya hemos visto el método más común para crear una matriz. Pero dependiendo de la situación, existen otras formas que podrían ser más adecuadas. Por ejemplo, si desea crear una matriz que contenga un rango de números, puede utilizar el operador de rango:

$dígitos = (0..9)

Esto creará una matriz de los diez dígitos del cero al nueve. También puedes inicializar una matriz vacía, en caso de que solo quieras un lugar para almacenar valores más adelante..

$valores = @()

Incluso se pueden anidar varias matrices unas dentro de otras, aunque este tipo de uso puede resultar confuso muy rápidamente.

$coordenadas = @(
    (5, 10, 23),
    (11, 7, 16)
)

De forma predeterminada, una matriz puede almacenar cualquier tipo de variable, ya sean números, cadenas o una combinación de ambos. Pero puede definir explícitamente un tipo en caso de que desee limitar los valores que se le asignan. Por ejemplo:

[int[]] $números = 2,3,4,5

De esta manera, la matriz sólo puede contener números enteros. Intentar asignarle cualquier otro tipo de valor devolverá un error. Esto puede ser útil para evitar errores simples en matrices que trabajan exclusivamente con valores numéricos, ya que ingresar una cadena en una variable que se usará en los cálculos creará problemas.

Acceso a matrices

Hasta ahora hemos visto múltiples métodos para crear matrices que contienen varios tipos de datos. Pero, ¿cómo se accede a estos datos?

Las matrices de PowerShell utilizan el mismo formato que utilizan otros lenguajes de programación. Se puede acceder a cada variable de matriz por su número de índice. Por ejemplo:

$var = $números[5]

Esto copiará el valor almacenado en el índice cinco de la matriz $numbersen la variable $var. Tenga en cuenta que los índices de la matriz comienzan a contar desde 0, por lo que se accede al primer elemento con cero.

Si tuviéramos que generar esto, por ejemplo:

“$días[2]”

Recibiremos el miércoles, no el martes.

También puedes utilizar este mismo método para modificar estos valores. Por ejemplo, el siguiente comando cambiará el segundo elemento de la matriz a cero:

$números[1] = 0

También puedes agregar más elementos a una matriz existente en lugar de cambiar los valores de las entradas actuales simplemente agregándolos como una expresión aritmética.

$nombres += “Johny”

Este método también se puede utilizar para agregar varias entradas a la vez, o incluso matrices completas.

$nombres += “Charlie, Liam, Teresa”

$nombres += $apellidos

El método separado por comas también sirve para acceder a múltiples elementos de la matriz. Al ingresar esto, por ejemplo, se almacenan los primeros cinco elementos de $daysen $weekdays..

$días laborables = $días[0,1,2,3,4]

Iteración a través de matrices

Acceder manualmente a elementos particulares de una matriz está muy bien, pero si desea realizar acciones en todo el contenido de una matriz, puede resultar tedioso. Un enfoque más elegante es utilizar un bucle For.

Los bucles For pueden recorrer sistemáticamente todos los elementos de una matriz, procesando cada valor según las instrucciones. Así es como puedes construir un bucle de este tipo:

Para ($i = 0 ; $i -lt $días.Longitud ; $i++)
{

    $días[$i]
}

La función array.Length devuelve el tamaño de la matriz, que es básicamente el número de elementos que contiene. Esto se puede conectar al parámetro de expresión de prueba de un bucle For para iterar de manera integral sobre todos los elementos.

El bucle Foreach y el bucle Foreach-object pueden hacer lo mismo con un script de PowerShell aún más sencillo.

Foreach ($día en $días)
{

    $día
}

Esto le ahorra el esfuerzo de determinar el tamaño de la matriz, dejando los detalles a cargo de PowerShell.

Cuándo debería utilizar matrices PowerShell

La mayor fuente de errores en un script complejo son las variables a las que se hace referencia incorrectamente. Esto sucede debido a la presencia de una gran cantidad de variables con nombres únicos, lo que dificulta recordar su propósito.

La solución más sencilla para este problema es utilizar matrices de forma extensiva. Todas las variables relacionadas de alguna manera se pueden asignar a una única matriz y se puede acceder a ellas a través de sus números de índice.

El caso de uso principal de

Microsoft PowerShell es la automatización, y las matrices desempeñan un papel fundamental en ello. Los objetos devueltos por los cmdlets de PowerShell se pueden almacenar en matrices e iterar sobre ellos. Esto permite realizar tareas secuenciales de forma automática, lo que simplifica enormemente la administración del sistema.

.

Artículos Relacionados:


1.06.2022