about_Arrays

Aggiornamento: maggio 2014

Si applica a: Windows PowerShell 2.0, Windows PowerShell 3.0, Windows PowerShell 4.0, Windows PowerShell 5.0

Inserire l'introduzione qui.

ARGOMENTO

about_Arrays

DESCRIZIONE BREVE

Questo argomento descrive le matrici, vale a dire strutture di dati realizzate per archiviare raccolte di elementi.

DESCRIZIONE LUNGA

Una matrice è una struttura di dati progettata per archiviare una raccolta di elementi. Gli elementi possono essere dello stesso tipo o di tipi diversi.

A partire da Windows PowerShell® 3.0, un insieme di zero o di un oggetto dispone di alcune proprietà delle matrici.

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 una virgola 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

È anche possibile creare e inizializzare una matrice usando l'operatore di intervallo (..). Ad esempio, per creare e inizializzare una matrice denominata "$B" contenente i valori da 5 a 8, digitare:

$B = 5..8

Di conseguenza, $B contiene quattro valori: 5, 6, 7 e 8.

Quando non vengono specificati tipi di dati, Windows PowerShell crea ogni matrice come una matrice di oggetti (digitare: System.Object[]). Per determinare il tipo di dati di una matrice, usare il metodo GetType (). Ad esempio, per determinare il tipo di dati della matrice $a, digitare:

$a.GetType()

Per creare una matrice fortemente tipizzata, vale a dire una matrice che può contenere solo i valori di un determinato tipo, eseguire il cast della variabile come tipo di matrice, ad esempio string[], long[] o int32[]. Per eseguire il cast di una matrice, anteporre il nome della variabile con un tipo di matrice racchiuso tra parentesi quadre. Ad esempio, per creare una matrice integer a 32 bit denominata $ia e contenente quattro valori integer (1500, 2230, 3350 e 4000), digitare:

[int32[]]$ia = 1500,2230,3350,4000

Di conseguenza, la matrice $ia può contenere solo numeri interi.

È possibile creare matrici per le quali viene eseguito il cast in qualsiasi tipo supportato in Microsoft .NET Framework. Ad esempio, gli oggetti recuperati da Get-Process per rappresentare i processi sono del tipo System.Diagnostics.Process. Per creare una matrice di oggetti processo fortemente tipizzata, immettere il comando seguente:

[Diagnostics.Process[]]$zz = Get-Process

OPERATORE DELLA SOTTOESPRESSIONE MATRICE

L'operatore di matrice sottoespressione crea una matrice, anche se contiene zero oggetti oppure uno soltanto.

La sintassi dell'operatore di matrice è la seguente:

@( ... )

È possibile usare l'operatore di matrice per creare una matrice con zero oggetti o con un oggetto.

PS C:\>$a = @("One")
PS C:\>$a.Count
1

PS C:\>$b = @()
PS C:\>$b.Count
0

L'operatore di matrice è utile negli script, quando si visualizzano oggetti, senza sapere quanti ne verranno visualizzati.

PS C:\> $p = @(Get-Process Notepad)

Per altre informazioni sull'operatore sottoespressione matrice, vedere about_Operators.

LETTURA DI UNA MATRICE

È possibile fare riferimento a una matrice usando il nome di variabile. Per visualizzare tutti gli elementi nella matrice, digitare il nome della matrice. Ad esempio:

$a

È possibile fare riferimento agli elementi in una matrice usando un indice, a partire dalla posizione 0. Racchiudere il numero di indice tra parentesi quadre. Ad esempio, per visualizzare il primo elemento nella matrice $a, digitare:

$a[0]

Per visualizzare il terzo elemento nella matrice $a, digitare:

$a[2]

I numeri negativi vengono contati dalla parte finale della matrice. Ad esempio, "-1" si riferisce all'ultimo elemento della matrice. Per visualizzare gli ultimi tre elementi della matrice, digitare:

$a[-3..-1]

Tuttavia, prestare attenzione quando si usa questa notazione.

$a[0..-2]

Il comando non fa riferimento a tutti gli elementi della matrice, eccetto l'ultimo. Fa riferimento al primo e all'ultimo elemento, nonché agli elementi dal secondo all'ultimo.

Per visualizzare un sottoinsieme di tutti i valori in una matrice, è possibile usare l'operatore di intervallo. Ad esempio, per visualizzare gli elementi di dati nella posizione di indice compresa tra 1 e 3, digitare:

$a[1..3]

È possibile usare l'operatore più (+) per combinare un intervallo con un elenco di elementi della matrice. Ad esempio, per visualizzare gli elementi in posizioni dell'indice 0, 2 e da 4 a 6, digitare:

$a[0,2+4..6]

Per determinare il numero di elementi in una matrice, usare la proprietà Length o il relativo alias Count.

$a.Count

È inoltre possibile usare costrutti di ciclo, ad esempio i cicli ForEach, For e While per fare riferimento agli elementi in una matrice. Ad esempio, per usare un ciclo ForEach al fine di visualizzare gli elementi nella matrice $a, digitare:

foreach ($element in $a) {$element}

Il ciclo Foreach esegue l'iterazione nella matrice e restituisce ogni valore nella matrice fino a raggiungere la fine della stessa.

Il ciclo For è utile quando si sono incremento contatori durante l'analisi di elementi di una matrice. Ad esempio, per usare un ciclo For al fine di restituire tutti gli altri valori della matrice, digitare:

for ($i = 0; $i -le ($a.length - 1); $i += 2) {$a[$i]}

È possibile usare un ciclo per visualizzare gli elementi in una matrice finché una condizione specificata non è più vera. Ad esempio, per visualizzare gli elementi in della matrice $a quando l'indice della matrice è minore di 4, digitare:

$i=0
while($i -lt 4) {$a[$i]; $i++}

VISUALIZZAZIONE DEI MEMBRI DI UNA MATRICE

Per visualizzare le proprietà e i metodi di una matrice, ad esempio la proprietà Length e il metodo SetValue, usare il parametro InputObject del cmdlet Get-Member.

Quando si esegue il piping di una matrice a Get-Member, Windows PowerShell invia un elemento alla volta e Get-Member restituisce il tipo di ogni elemento della matrice (ignora i duplicati).

Quando si utsa il parametro InputObject, Get-Member restituisce i membri della matrice.

Ad esempio, il comando seguente consente di visualizzare i membri della matrice nella variabile $a.

Get-Member -InputObject $a

È anche possibile visualizzare i membri di una matrice digitando una virgola (,) prima del valore viene reindirizzato al cmdlet Get-Member. Tramite l'uso della virgola, la matrice diventa il secondo elemento in una matrice di matrice. Windows PowerShell esegue il piping di una matrice alla volta e Get-Member restituisce i membri della matrice.

,$a | Get-Member

,(1,2,3) | Get-Member

MODIFICA DI UNA MATRICE

È possibile modificare gli elementi di una matrice, aggiungere un elemento a una matrice e combinare i valori da due matrici in una terza matrice.

Per modificare il valore di un particolare elemento di una matrice, specificare il nome della matrice e l'indice dell'elemento che si desidera modificare, quindi usare l'operatore di assegnazione (=) per specificare un nuovo valore per l'elemento. Ad esempio, per modificare il valore della seconda voce di una matrice $a (posizione dell'indice 1) a 10, digitare:

$a[1] = 10

È anche possibile usare il metodo SetValue di una matrice per modificare un valore. Nell'esempio seguente viene modificato il secondo valore (posizione dell'indice 1) della matrice $a su 500:

$a.SetValue(500,1)

È possibile usare l'operatore + = per aggiungere un elemento in una matrice. Quando viene usato, Windows PowerShell crea una nuova matrice con i valori della matrice originale e il valore aggiunto. Ad esempio, per aggiungere un elemento con un valore pari a 200 nella matrice in della variabile $a, digitare:

$a += 200

Non è facile eliminare elementi da una matrice, tuttavia è possibile creare una nuova matrice che contiene solo gli elementi selezionati di una matrice esistente. Ad esempio, per creare la matrice $t con tutti gli elementi della matrice $a, con la sola eccezione del valore nella posizione dell'indice 2, digitare:

$t = $a[0,1 + 3..($a.length - 1)]

Per combinare due matrici in una singola, usare l'operatore più (+). Nell'esempio seguente vengono create due matrici, combinate e successivamente viene visualizzata la matrice risultante combinata.

$x = 1,3
$y = 5,9
$z = $x + $y

Di conseguenza, la matrice $z contiene valori 1, 3, 5 e 9.

Per eliminare una matrice, è possibile assegnarle un valore $null. Il comando seguente consente di eliminare la matrice nella variabile $a.

$a = $null

È anche possibile usare il cmdlet Remove-Item, ma l'assegnazione del valore $null è più veloce, soprattutto per le matrici di grandi dimensioni.

MATRICI DI ZERO O UNO

A partire da Windows PowerShell 3.0, una raccolta di zero oggetti o di un oggetto dispone delle proprietà Count e Length. È possibile anche indicizzare una matrice di un oggetto. Questa funzionalità consente di evitare errori di script che si verificano quando un comando che attende di ricevere una raccolta di elementi ottiene meno di due elementi.

Nell'esempio seguente viene illustrata questa funzionalità.

#Zero objects
$a = $null
$a.Count
0
$a.Length
0

#One object
$a = 4
$a.Count
1
$a.Length
1
$a[0]
4
$a[-1]
4

VEDERE ANCHE

about_Assignment_Operators

about_Hash_Tables

about_Operators

about_For

about_Foreach

about_While