Come passare un array a una funzione in PowerShell

In molti linguaggi di programmazione, incluso PowerShell, gli array sono una struttura dati fondamentale. Permettono di memorizzare collezioni di valori in modo efficiente, rendendoli uno strumento cruciale per vari compiti nella scrittura di script in PowerShell.
Questo articolo si concentrerà sugli array e sulla convenzione di passare un array a una funzione in PowerShell.
Array di PowerShell
Gli array di PowerShell non sono diversi da quegli array nei linguaggi di programmazione generali come Java, Python, C#, ecc. Forniscono la capacità di contenere collezioni di valore o oggetti di qualsiasi tipo di dato di dimensioni fisse.
Sintassi:
$intTypeArray = 34, 100, 1000, 45, 455, 1
Per controllare il tipo della variabile $intTypeArray
nel seguente esempio, utilizzeremo il metodo integrato GetType()
.
Come previsto, il tipo base è System.Array
. Poiché non abbiamo specificato esplicitamente il tipo di dato di questo array, il motore di PowerShell lo ha creato come un array di oggetti.
In modo interessante, gli array di PowerShell possono contenere tipi diversi di elementi all’interno di un singolo array, come esemplificato nel frammento di codice sottostante.
Codice:
$mixedElementArray = 200, 'stringElement', 12.555, 'hello'
Output:
Come puoi vedere, l’array predefinito di PowerShell si basa sul tipo Object[]
.
In PowerShell, ogni valore o oggetto è ereditato da Object
. Quindi, qualsiasi valore o oggetto è assegnabile a un array predefinito di PowerShell.
Oltre agli array predefiniti, PowerShell offre una variante nota come array fortemente tipizzati. Questi array accolgono esclusivamente collezioni di un tipo di dato specifico.
Quando creiamo un array fortemente tipizzato, è necessario castare la variabile di riferimento a un tipo di array specifico come int32[]
, string[]
, ecc.
[string[]]$stringTypeArray = 'tesla', 'mecedes', 'audi', 'lambo'
Controlliamo il tipo di $stringTypeArray
.
$stringTypeArray.GetType()
Output:
Passare un Array a una Funzione PowerShell
In PowerShell, gli array fortemente tipizzati sono consigliati da utilizzare nei tuoi programmi PowerShell perché offrono sicurezza di tipo. Ogni volta che devi passare un array già definito a una funzione, la seguente sintassi dovrebbe funzionare correttamente.
Sintassi:
function <function_identifier>([<data_type>[]]$<parameter_name>)
{
}
In questa sintassi:
function
: Denota la parola chiave utilizzata per iniziare la definizione di una funzione in PowerShell.<function_name>
: Rappresenta il nome della funzione.[<data_type>[]]
: Specifica il tipo di dato del parametro, consentendoti di lavorare con array del tipo di dato specificato all’interno della funzione.$<parameter_name>
: Funziona come il nome del parametro all’interno della funzione.
In questo modo, puoi facilmente passare un array a una funzione. Per illustrare ciò, prima definiamo una funzione PowerShell chiamata letsPassAnArray
.
Codice:
function letsPassAnArray([string[]]$stringList) {
foreach ($arrEle in $stringList) {
Write-Host $arrEle
}
}
In questo esempio, definiamo una funzione PowerShell chiamata letsPassAnArray
con un parametro di nome $stringList
. Poi, iniziamo un ciclo foreach
per iterare attraverso ogni elemento ($arrEle
) nell’array $stringList
.
Dentro il ciclo, scriviamo ogni elemento dell’array sulla console. Per testare la funzione, creiamo un array di tipo stringa chiamato $stringArr
con elementi 'Apple'
, 'Orange'
, e 'Grapes'
.
Codice:
[string[]]$stringArr = 'Apple', 'Orange', 'Grapes'
letsPassAnArray($stringArr)
Infine, chiamiamo la funzione letsPassAnArray
e passiamo l’array $stringArr
come argomento, causando alla funzione di iterare e stampare ogni elemento dell’array.
Output:
Conclusione
In PowerShell, comprendere gli array e come passarli alle funzioni è essenziale per una scrittura di script efficiente e organizzata. Che tu stia lavorando con array generici che possono contenere vari tipi di dato o array fortemente tipizzati per la sicurezza di tipo, padroneggiare la manipolazione degli array ti permetterà di scrivere script PowerShell più efficaci.
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.