Las variables son la estructura de datos más básica en cualquier tipo de codificación. Pero las variables individuales difícilmente 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 Python, 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? Vamos a averiguarlo.
Tabla de contenido
Arreglos de PowerShell 101
Simplemente hablando, un arreglo es solo una colección estructurada de variables. La idea es eliminar la molestia de realizar un seguimiento de docenas de nombres al unir las 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. Solo necesita usar comillas simples o dobles para especificar una cadena.
$name=“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 confusiones, 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 ser útil cuando se intenta poner la salida de otros comandos en una matriz, donde no se pueden escribir manualmente en el formato correcto.
Creando un arreglo
Ya hemos visto el método más común para crear un arreglo. Pero dependiendo de la situación, hay otras formas que pueden ser más adecuadas. Por ejemplo, si desea crear una matriz que contenga un rango de números, puede usar el operador de rango:
$dígitos=(0..9)
Esto creará una matriz de todos los diez dígitos del cero al nueve. También puede inicializar una matriz vacía, en caso de que solo desee un lugar para almacenar valores más adelante.
$values =@()
Se pueden usar varias matrices incluso pueden anidarse entre sí, aunque este tipo de uso puede volverse confuso muy rápido.
$coordinates=@(
(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[]] $numbers=2,3,4,5
De esta manera, la matriz solo puede contener números enteros. Intentar asignarle cualquier otro tipo de valor devolverá un error. Esto puede ser útil para evitar errores simples para arreglos que trabajan exclusivamente con valores numéricos, ya que ingresar una cadena en una variable para usarla en los cálculos creará problemas.
Acceso a arreglos
Hasta ahora hemos visto múltiples métodos para crear arreglos que contienen varios tipos de datos. Pero, ¿cómo accede a estos datos?
Los arreglos de PowerShell usan el mismo formato que usan otros lenguajes de programación. Se puede acceder a cada variable de matriz por su número de índice. Por ejemplo:
$var=$numbers[5]
Esto copiará el valor almacenado en el índice cinco de la matriz de $numbers en el $ variable variable. Tenga en cuenta que los índices de matriz comienzan a contar desde 0, por lo que se accede al primer elemento con cero.
Si tuviéramos que mostrar esto, por ejemplo:
“$días[2 ]”
Obtendremos el miércoles, no el martes.
También puede usar este mismo método para modificar estos valores. Por ejemplo, el siguiente comando cambiará el segundo elemento de la matriz a cero:
$numbers[1]=0
También puede 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.
$names +=“Johny”
Este método también se puede usar para agregar varias entradas a la vez, o incluso conjuntos completos.
$names +=“Charlie, Liam, Teresa”
$nombres +=$apellidos
El método de separación por comas se aplica también para acceder a varios elementos de la matriz. Ingresar esto, por ejemplo, almacena los primeros cinco elementos de $days en $weekdays.
$weekdays=$days[0,1,2,3,4]
Iterando a través de arreglos
Acceder manualmente a elementos particulares de un arreglo está muy bien, pero si desea realizar acciones en todo el contenido de un arreglo, puede volverse tedioso. Un enfoque más elegante es usar un bucle For.
Los bucles For pueden pasar sistemáticamente por todos los elementos de una matriz, procesando cada valor de acuerdo con las instrucciones. Así es como puede construir un bucle de este tipo:
For ($i=0 ; $i-lt $days.Length ; $i++)
{
$days[$i]
}
La función array.Length devuelve el tamaño de la matriz, que es básicamente la cantidad de elementos que contiene. Esto se puede conectar al parámetro de expresión de prueba de un bucle For para iterar exhaustivamente sobre todos los elementos.
El bucle Foreach y el bucle Foreach-objeto pueden hacer lo mismo con un script de PowerShell aún más eficiente.
Foreach ($día en $días)
{
$día
}
Esto le ahorra el esfuerzo de determinar el tamaño de la matriz, dejando los detalles para que los maneje PowerShell.
¿Cuándo debe usar las matrices de PowerShell?
La mayor fuente de errores en un script complejo son las variables referenciadas incorrectamente. Esto sucede debido a la presencia de una gran cantidad de variables con nombres exclusivos, lo que dificulta recordar su propósito.
La solución más sencilla para este problema es usar arreglos 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 principal caso de uso de Microsoft PowerShell es la automatización, y las matrices juegan un papel fundamental en eso. Los objetos devueltos por los cmdlets de PowerShell se pueden almacenar en matrices y se pueden iterar. Esto permite que las tareas secuenciales se realicen automáticamente, lo que simplifica enormemente la administración del sistema.