Gli array in powershell hanno un grosso "problema", se devono essere utilizzati per delle elaborazioni: una volta definiti, hanno una dimensione fissa.
$array = @('1', '2')
E' possibile aggiungere elementi, ma il sistema in realtà crea un "nuovo array" e ci carica dentro tutti gli elementi del primo e quelli nuovi che si intende aggiungere.
Questo è decisamente dispendioso in termini di tempo e di risorse.
Se invece si vuole lavorare con una struttura più "dinamica", bisogna utilizzare i System.Collections.ArrayList.
L'ArrayList viene definito in questo modo:
$array = new-object System.Collections.ArrayListE' possibile accedere ai suoi elementi utilizzando la solita convenzione per gli array (indicando l'index tra parentesi quadre):
for ($i = 0; $i -lt $array.Count; $i++)
{
$el = $array[$i]
[...]
}E' possibile inoltre aggiungere degli elementi senza rigenerare l'array:
$array.Add("dato") | Out-NullNota: in questo caso, i richiami ad "Add" (o "Remove") restituiscono in output il numero di righe processate, quindi è necessario passare l'output a "null" (come nell'esempio qui sopra).
E' possibile inoltre trasformare l'array in una stringa singola usando un separatore:
$msg = $array -join " "E' possibile contare gli elementi al suo interno:
$count = $array.CountDa notare che l'associazione di un'ArrayList ad un'altra variabile avviene "per riferimento" e non "per valore", per cui un eventuale richiamo a .Clear() elimina i dati da entrambi! (che poi... è lo stesso elemento).
Nessun commento:
Posta un commento