Cómo pasar un array a una función en PowerShell

En muchos lenguajes de programación, incluyendo PowerShell, las matrices son una estructura de datos fundamental. Permiten almacenar colecciones de valores de manera eficiente, lo que las convierte en una herramienta crucial para diversas tareas en la escritura de scripts en PowerShell.
Este artículo se centrará en las matrices y la convención de pasar una matriz a una función en PowerShell.
Matrices de PowerShell
Las matrices de PowerShell no son diferentes a las matrices en lenguajes de programación de propósito general como Java, Python, C#, etc. Proporcionan la capacidad de contener colecciones de tamaño fijo de valores u objetos de cualquier tipo de dato.
Sintaxis:
$intTypeArray = 34, 100, 1000, 45, 455, 1
Para comprobar el tipo de la variable $intTypeArray
en el siguiente ejemplo, utilizaremos el método GetType()
incorporado.
Como era de esperar, el tipo base es System.Array
. Dado que no hemos especificado explícitamente el tipo de dato de esta matriz, el motor de PowerShell la ha creado como una matriz de objetos.
Curiosamente, las matrices de PowerShell pueden acomodar diversos tipos de elementos dentro de una misma matriz, como se ejemplifica en el fragmento de código a continuación.
Código:
$mixedElementArray = 200, 'stringElement', 12.555, 'hello'
Salida:
Como puedes ver, la matriz predeterminada de PowerShell está basada en el tipo Object[]
.
En PowerShell, cada valor u objeto hereda de Object
. Por lo tanto, cualquier valor u objeto se puede asignar a una matriz predeterminada de PowerShell.
Además de las matrices predeterminadas, PowerShell ofrece una variante conocida como matrices fuertemente tipadas. Estas matrices solo acomodan colecciones de un tipo de dato específico.
Cuando creamos una matriz fuertemente tipada, es necesario convertir la variable de referencia a un tipo de matriz específico como int32[]
, string[]
, etc.
[string[]]$stringTypeArray = 'tesla', 'mecedes', 'audi', 'lambo'
Veamos el tipo de $stringTypeArray
.
$stringTypeArray.GetType()
Salida:
Pasar una matriz a una función de PowerShell
En PowerShell, se recomienda usar matrices fuertemente tipadas en tus programas de PowerShell porque tienen seguridad de tipo. Siempre que necesites pasar una matriz ya definida a una función, la siguiente sintaxis debería funcionar correctamente.
Sintaxis:
function <function_identifier>([<data_type>[]]$<parameter_name>)
{
}
En esta sintaxis:
function
: Denota la palabra clave utilizada para iniciar la definición de una función en PowerShell.<function_name>
: Representa el nombre de la función.[<data_type>[]]
: Especifica el tipo de dato del parámetro, permitiéndote trabajar con matrices del tipo de dato especificado dentro de la función.$<parameter_name>
: Sirve como el nombre del parámetro dentro de la función.
De esta manera, puedes pasar fácilmente una matriz a la función. Para ilustrar esto, primero definamos una función de PowerShell llamada letsPassAnArray
.
Código:
function letsPassAnArray([string[]]$stringList) {
foreach ($arrEle in $stringList) {
Write-Host $arrEle
}
}
En este ejemplo, definimos una función de PowerShell llamada letsPassAnArray
con un parámetro llamado $stringList
. Luego, comenzamos un bucle foreach
para iterar a través de cada elemento ($arrEle
) en la matriz $stringList
.
Dentro del bucle, escribimos cada elemento de la matriz en la consola. Para probar la función, creamos una matriz de tipo cadena llamada $stringArr
con elementos 'Apple'
, 'Orange'
y 'Grapes'
.
Código:
[string[]]$stringArr = 'Apple', 'Orange', 'Grapes'
letsPassAnArray($stringArr)
Finalmente, llamamos a la función letsPassAnArray
y pasamos la matriz $stringArr
como un argumento a ella, lo que provoca que la función itere e imprima cada elemento de la matriz.
Salida:
Conclusión
En PowerShell, comprender las matrices y cómo pasarlas a funciones es esencial para una escritura de scripts eficiente y organizada. Ya sea que estés trabajando con matrices genéricas que pueden contener varios tipos de datos o matrices fuertemente tipadas para seguridad de tipo, dominar la manipulación de matrices te permitirá escribir scripts de PowerShell más efectivos.
Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.