ARGOMENTO about_Arrays DESCRIZIONE BREVE Descrive una struttura di dati compatta per l'archiviazione degli elementi di dati DESCRIZIONE DETTAGLIATA Una matrice è una struttura di dati per l'archiviazione di una raccolta di elementi di dati dello stesso tipo. Windows PowerShell supporta elementi di dati quali stringa, int (valore intero a 32 bit), long (valore intero a 64 bit), bool (valore booleano), byte e altri tipi di oggetti Microsoft .NET Framework. CREAZIONE E INIZIALIZZAZIONE DI UNA MATRICE Per creare e inizializzare una matrice, assegnare più valori a una variabile. I valori archiviati nella matrice sono delimitati da virgole e separati dal nome della variabile tramite l'operatore di assegnazione (=). Ad esempio, per creare una matrice denominata $A contenente i sette valori numerici (int) 22, 5, 10, 8, 12, 9 e 80, digitare: $A = 22,5,10,8,12,9,80 È inoltre possibile creare e inizializzare una matrice utilizzando l'operatore di intervallo (..). Per creare e inizializzare, ad esempio, una matrice denominata "$B" contenente i valori da 5 a 8, digitare: $B = 5..8 $B conterrà pertanto i quattro valori 5, 6, 7 e 8. Quando non viene specificato alcun tipo di dati, in Windows PowerShell ogni matrice viene creata come matrice di oggetti (tipo: object[]). Per determinare il tipo di dati di una matrice, utilizzare il metodo GetType(). Ad esempio, per determinare il tipo di dati della matrice $a, digitare: $a.gettype() Per creare una matrice fortemente tipizzata, ovvero una matrice che contenga solo valori di un tipo specifico, eseguire il cast della variabile come tipo di matrice, ad esempio string[], long[] o int32[]. Per eseguire il cast di una matrice, anteporre al nome della variabile un tipo di matrice racchiuso tra parentesi. Ad esempio, per creare una matrice di valori interi a 32 bit denominata $ia contenente quattro valori interi (1500, 2230, 3350 e 4000), digitare: [int32[]]$ia = 1500,2230,3350,4000 La matrice $ia potrà pertanto contenere solo valori integer. È possibile creare matrici di cui viene eseguito il cast a qualsiasi tipo supportato in Microsoft .NET Framework. Ad esempio, gli oggetti recuperati da Get-Process per rappresentare i processi sono di tipo System.Diagnostics.Process. Per creare una matrice fortemente tipizzata di oggetti processo, immettere il comando seguente: [Diagnostics.Process[]]$zz = Get-Process È possibile inserire dati in una matrice tramite l'output di un cmdlet, una funzione o un'istruzione. Ad esempio, con l'istruzione seguente viene creata una matrice contenente i processi che iniziano con le lettere "co" e sono in esecuzione nel computer corrente: $LocalProcesses = get-process co* Se l'istruzione ottiene solo un processo singolo, la variabile $LocalProcesses non è una matrice. Per assicurarsi che il comando crei una matrice, utilizzare l'operatore della sottoespressione di matrice, @, come illustrato nell'esempio seguente: $LocalProcesses = @(get-process co*) Anche se il comando restituisce un processo singolo, la variabile $LocalProcesses è una matrice. Anche se dispone di un solo membro, è possibile utilizzarla come qualsiasi altra matrice. Ad esempio, è possibile aggiungere a essa altri oggetti. Per ulteriori informazioni, vedere about_Operators. LETTURA DI UNA MATRICE È possibile fare riferimento a una matrice utilizzando il nome della relativa variabile, ad esempio $A o $a. In Windows PowerShell non viene fatta distinzione tra maiuscole e minuscole. Per visualizzare tutti gli elementi della matrice, digitarne il nome. Ad esempio: $a È possibile fare riferimento agli elementi di una matrice utilizzando un indice, iniziando dalla posizione 0. Racchiudere il numero di indice tra parentesi. Ad esempio, per visualizzare il primo elemento della matrice $a, digitare: $a[0] Per visualizzare il terzo elemento della matrice $a, digitare: $a[2] I numeri negativi consentono di iniziare il conteggio dalla fine della matrice. "-1", ad esempio, indica l'ultimo elemento della matrice. Per visualizzare gli ultimi tre elementi della matrice, digitare: $a[-3..-1] Quando si utilizza questa notazione, è tuttavia necessario fare attenzione. $a[0..-2] Questo comando non si riferisce a tutti gli elementi della matrice ad esclusione dell'ultimo, bensì al primo, all'ultimo e al penultimo elemento. È possibile utilizzare l'operatore di intervallo per visualizzare un sottoinsieme di tutti i valori di una matrice. Per visualizzare, ad esempio, gli elementi di dati nelle posizioni di indice da 1 a 3, digitare: $a[1..3] È possibile utilizzare l'operatore più (+) per combinare un intervallo con un elenco di elementi di una matrice. Ad esempio, per visualizzare gli elementi nelle posizioni di indice 0, 2 e dalla 4 alla 6, digitare: $a[0,2+4..6] Per determinare il numero di elementi presenti in una matrice, combinare l'intervallo con la proprietà length di una matrice. Per visualizzare, ad esempio, gli elementi dalla posizione di indice 2 alla fine della matrice, digitare: $a[2..($a.length-1)] Il valore di length è impostato su -1 in quanto l'indice inizia dalla posizione 0. In una matrice composta da tre elementi (1,2,3), pertanto, l'indice del terzo elemento è 2, ovvero uno in meno rispetto alla lunghezza della matrice. Per fare riferimento agli elementi di una matrice, è anche possibile utilizzare costrutti di ciclo, ad esempio Foreach, For e While. Ad esempio, per utilizzare un ciclo Foreach per visualizzare gli elementi della matrice $a, digitare: foreach ($element in $a) {$element} Il ciclo Foreach scorre la matrice e restituisce ogni valore presente finché non viene raggiunta la fine della matrice. Il ciclo For è utile quando si incrementano i contatori mentre si esaminano gli elementi di una matrice. Ad esempio, per restituire un valore ogni due di una matrice utilizzando un ciclo For, digitare: for ($i = 0; $i -le ($a.length - 1); $i += 2) {$a[$i]} È possibile utilizzare un ciclo While per visualizzare gli elementi di una matrice fino a quando una condizione definita non è più vera. Ad esempio, per visualizzare gli elementi della matrice $a mentre l'indice della matrice è minore di 4, digitare: $i=0 while($i -lt 4) {$a[$i]; $i++} Per informazioni sulle proprietà e i metodi di una matrice, ad esempio la proprietà Length e il metodo SetValue, utilizzare il parametro InputObject del cmdlet Get-Member. Quando si reindirizza una matrice a Get-Member, vengono visualizzate le informazioni sugli oggetti della matrice. Quando si utilizza il parametro InputObject, vengono visualizzate le informazioni sulla matrice. Per trovare le proprietà e i metodi della matrice $a, digitare: get-member -inputobject $a MODIFICA DI UNA MATRICE È possibile modificare gli elementi di una matrice, aggiungere un elemento a una matrice e combinare i valori di due matrici in una terza. Per modificare il valore di un elemento specifico di una matrice, specificare il nome della matrice e l'indice dell'elemento che si desidera modificare, quindi utilizzare l'operatore di assegnazione (=) per specificare un nuovo valore per l'elemento. Ad esempio, per modificare il valore del secondo elemento della matrice $a, (posizione di indice 1) impostandolo su 10, digitare: $a[1] = 10 Per modificare un valore è anche possibile utilizzare il metodo SetValue di una matrice. Nell'esempio seguente il secondo valore (posizione di indice 1) della matrice $a viene impostato su 500: $a.SetValue(500,1) È possibile aggiungere un elemento a una matrice esistente utilizzando l'operatore +=. Questo operatore consente di effettuare un'aggiunta a un valore esistente. Quando l'operatore viene utilizzato su un elemento di una matrice, consente di aumentare il valore dell'elemento. Quando invece viene utilizzato sulla matrice stessa, consente di aggiungere il valore. Ad esempio, per aggiungere un elemento con un valore pari a 200 alla matrice $a, digitare: $a += 200 Non è semplice eliminare gli elementi da una matrice, ma è possibile creare una nuova matrice contenente solo gli elementi selezionati di una matrice esistente. Ad esempio, per creare la matrice $t con tutti gli elementi della matrice $a, eccetto il valore nella posizione di indice 2, digitare: $t = $a[0,1 + 3..($a.length - 1)] Per combinare due matrici in una sola, utilizzare l'operatore più (+). Nell'esempio seguente vengono create due matrici, quindi tali matrici vengono unite e infine viene visualizzata la matrice combinata risultante. $x = 1,3 $y = 5,9 $z = $x + $y La matrice $z conterrà pertanto i valori 1, 3, 5 e 9. Per eliminare una matrice, utilizzare il cmdlet Remove-Item per eliminare la variabile contenente la matrice. Nel comando seguente viene specificato l'elemento "a" nell'unità Variable:. remove-item variable:a Per ulteriori informazioni sull'unità Variable: vedere l'argomento della Guida relativo al provider Variable. VEDERE ANCHE about_Assignment_Operators about_Hash_Tables about_Operators about_For about_Foreach about_While