Sulle Matrici
- 08/26/2020
- 14 minuti a leggere
-
- c
Breve Descrizione
Descrive le matrici, che sono strutture di dati progettato per storecollections di elementi.
Descrizione lunga
Un array è una struttura dati progettata per memorizzare una raccolta di elementi.Gli articoli possono essere dello stesso tipo o di tipi diversi.
A partire da Windows PowerShell 3.,0, una raccolta di zero o un oggetto haalcune proprietà di array.
Creazione e inizializzazione di un array
Per creare e inizializzare un array, assegnare più valori a una variabile. I valori memorizzati nell’array sono delimitati da una virgola e separati dal nome variabile dall’operatore di assegnazione (=
).,
Ad esempio, per creare un array denominato $A
che contiene i sette valori numerici (int) di 22, 5, 10, 8, 12, 9, e 80, digitare:
La virgola può anche essere utilizzata per inizializzare un singolo array di elementi posizionando thecomma prima del singolo elemento.
Ad esempio, per creare un singolo array di elementi denominato$B
contenente il valore singolo di 7, digitare:
È anche possibile creare e inizializzare un array utilizzando l’operatore range (..
).,L’esempio seguente crea un array contenente i valori da 5 a 8.
Di conseguenza,$C
contiene quattro valori: 5, 6, 7 e 8.
Quando non viene specificato alcun tipo di dati, PowerShell crea ogni array come objectarray (System.Oggetto). Per determinare il tipo di dati di un array, utilizzare il metodo Gettype ()., Ad esempio, per determinare il tipo di dati dell’array $A
, digitare:
Per creare un array fortemente tipizzato, ovvero un array che può contenere solovalori di un particolare tipo, lanciare la variabile come tipo di array, come string, long o int32. Per lanciare un array, precedere ilnome variabile con un tipo di array racchiuso tra parentesi., Ad esempio, per creare un array intero a32 bit denominato$ia
contenente quattro numeri interi (1500, 2230, 3350 e 4000), digitare:
Di conseguenza, l’array$ia
può contenere solo interi.
È possibile creare array che vengono trasmessi a qualsiasi tipo supportato Microsoft.NET Quadro. Ad esempio, gli oggetti che Get-Process
recupera i processi presenti sono del Sistema.Diagnostica.Tipo di processo., Per creare un array di oggetti di processo fortemente tipizzato, immettere il seguente comando:
L’operatore di sottoespressione dell’array
L’operatore di sottoespressione dell’array crea un array dalle istruzioni all’internoit. Qualunque sia l’istruzione all’interno dell’operatore, l’operatore lo posizionerà in un array. Anche se c’è zero o un oggetto.
La sintassi dell’operatore array è la seguente:
È possibile utilizzare l’operatore array per creare un array di zero o un oggetto., Per esempio:
L’operatore array è utile negli script quando si ottengono oggetti, ma non si sa quanti oggetti si ottengono. Ad esempio:
Per ulteriori informazioni sull’operatore di sottoespressione dell’array, vedere About_operators.
Accesso e utilizzo degli elementi dell’array
Lettura di un array
È possibile fare riferimento a un array utilizzando il suo nome di variabile. Per visualizzare tutti gli elementi nell’array, digitare il nome dell’array., Ad esempio, supponendo che $a
sia un anarray contenente interi 0, 1, 2, fino a 9; digitando:
È possibile fare riferimento agli elementi di un array utilizzando un indice, a partire dalla posizione 0. Racchiudere il numero di indice tra parentesi., Per esempio, per visualizzare primo elemento $a
array, tipo:
Per visualizzare il terzo elemento $a
array, tipo:
È possibile recuperare parte della matrice utilizzando un operatore di intervallo per l’indice. Ad esempio, per recuperare dal secondo al quinto elemento dell’array, si dovrebbe digitare:
I numeri negativi contano dalla fine dell’array., Ad esempio, “-1” si riferisce al’ultimo elemento dell’array. Per visualizzare gli ultimi tre elementi dell’array, in ordine crescente di indice, digitare:
Se si digita indici negativi in ordine decrescente, l’output cambia.
Tuttavia, fare attenzione quando si utilizza questa notazione. La notazione va dal confine finale all’inizio dell’array.,
È possibile utilizzare l’operatore plus (+
) per combinare un intervallo con un elenco di elementi in un array. Ad esempio, per visualizzare gli elementi nelle posizioni dell’indice da 0, 2 e da 4 a 6, digitare:
Inoltre, per elencare più intervalli e singoli elementi è possibile utilizzare plusoperator., Ad esempio, per elencare gli elementi da zero a due, da quattro a sei e l’elemento all’ottavo tipo posizionale:
Iterazioni su elementi dell’array
È anche possibile utilizzare costrutti di loop, come ForEach, For e While loop, per accedere agli elementi di un array. Ad esempio, per utilizzare un ciclo ForEach per visualizzare gli elementi nell’array $a
, digitare:
Il ciclo Foreach itera attraverso l’array e restituisce ogni valore nell’array fino a raggiungere la fine dell’array.,
Il ciclo For è utile quando si incrementano i contatori mentre si esaminano gli elementi in un array. Ad esempio, per utilizzare un ciclo For per restituire ogni altro valore in un array, digitare:
È possibile utilizzare un ciclo While per visualizzare gli elementi in un array fino a quando una condizione definita non è più vera., Per esempio, per visualizzare gli elementi nel $a
array, mentre l’indice dell’array è inferiore a 4, tipo:
Proprietà delle matrici
Conteggio o Lunghezza o LongLength
determinare il numero di elementi in un array, utilizzare il Length
proprietàCount
alias. Longlength
è utile se l’array contiene più di2,147,483,647 elementi.
Rank
Restituisce il numero di dimensioni nell’array., La maggior parte degli array in PowerShell hannouna dimensione, solo. Anche quando pensi di costruire un multidimensionalarray; come il seguente esempio:
Il seguente esempio mostra come creare un array veramente multidimensionale usando.Net Framework.
Metodi di array
Cancella
Imposta tutti i valori degli elementi al valore predefinito del tipo di elemento dell’array.Il metodo Clear () non ripristina la dimensione dell’array.,
Nel seguente esempio $a
è un array di oggetti.
In questo esempio,$intA
viene esplicitamente digitato per contenere numeri interi.
ForEach
Permette di iterare su tutti gli elementi della matrice ed eseguire una data operationfor ogni elemento della matrice.
Il metodo ForEach ha diversi sovraccarichi che eseguono operazioni diverse.,
ForEach(scriptblock expression)
ForEach(scriptblock expression, object arguments)
Questo metodo è stato aggiunto in PowerShell v4.
Nota
La sintassi richiede l’uso di un blocco di script. Le parentesi sono facoltative ifthe scriptblock è l’unico parametro. Inoltre, non deve esserci uno spaziotra il metodo e la parentesi o la parentesi di apertura.
Il seguente esempio mostra come utilizzare il metodo foreach. In questo caso theintent è quello di generare il valore quadrato degli elementi nella matrice.,
Proprio come il -ArgumentList
parametro ForEach-Object
arguments
parametro consente il passaggio di un array di argomenti da uno script blockconfigured accettarli.
Per ulteriori informazioni sul comportamento di ArgumentList, vedere About_splatting.,
ForEach(type convertToType)
Il metodoForEach
può essere utilizzato per lanciare rapidamente gli elementi in un differenttype; il seguente esempio mostra come convertire un elenco di date di stringa in tipo.
ForEach(string propertyName)
ForEach(string propertyName, oggetto newValue)
ForEach
metodo può anche essere utilizzato per recuperare o impostare propertyvalues per ogni elemento della collezione.,
ForEach(string methodName)
ForEach(string methodName, object arguments)
Infine,ForEach
i metodi possono essere utilizzati per eseguire un metodo su ogni elemento nella raccolta.
Proprio come il -ArgumentList
parametro ForEach-Object
arguments
parametro consente il passaggio di un array di argomenti da uno script blockconfigured accettarli.
Nota
A partire da Windows PowerShell 3.,0 il recupero delle proprietà e l’executingmethods per ogni elemento in una raccolta possono anche essere eseguiti utilizzando “Methodsof scalar objects and collections” Puoi leggere di più su questo qui about_methods.
Dove
Permette di filtrare o selezionare gli elementi della matrice. Lo script deve valutare qualcosa di diverso da: zero (0), stringa vuota, $false
o $null
perl’elemento da mostrare dopo Where
Esiste una definizione per Where
metodo.,
Nota
La sintassi richiede l’uso di un blocco di script. Le parentesi sono facoltative ifthe scriptblock è l’unico parametro. Inoltre, non deve esserci uno spaziotra il metodo e la parentesi o la parentesi di apertura.
Expression
è scriptblock che è necessario per il filtraggio, l’ mode
argomento opzionale che consente la ulteriore capacità di selezione, e ilnumberToReturn
argomento opzionale che consente la possibilità di limitare il numero di itemsare restituito dal filtro.,p>I valori accettabili per mode
sono:
- Default (0) – Restituire tutti gli articoli
- Primo (1) – restituisce il primo elemento
- Ultimo (2) – il Ritorno l’ultimo elemento
- SkipUntil (3) – Ignorare gli elementi fino a quando la condizione è vera, il ritorno del remainingitems
- Fino a (4) – Restituzione di tutti gli elementi fino a quando la condizione è vera
- Split (5) – restituisce un array di due elementi
- primo elemento contiene gli elementi corrispondenti
- secondo elemento che contiene gli elementi rimanenti
L’esempio seguente viene illustrato come selezionare tutti i numeri dispari dall’array.,
Questo esempio mostra come selezionare le stringhe che non sono vuote.
Default
La modalitàDefault
filtra gli elementi utilizzando ilExpression
scriptblock.
Se viene fornito un numberToReturn
, specifica il numero massimo di elementi da restituire.,
Nota
Sia la modalità Default
che la modalitàFirst
restituiscono i primi elementi (numberToReturn
) e possono essere usati in modo intercambiabile.
Last
SkipUntil
La modalità SkipUntil
salta tutti gli oggetti in una raccolta fino a quando un oggetto non passa il filtro di espressione del blocco script. Restituisce quindi TUTTI i collectionitems rimanenti senza testarli. Solo un elemento di passaggio è testato.
Ciò significa che la raccolta restituita contiene sia elementi di passaggio che di non passaggio che non sono stati testati.,
Il numero di articoli restituiti può essere limitato passando un valore all’argomentonumberToReturn
.
Fino a quando
La modalità Until
inverte la modalità SkipUntil
. Restituisce TUTTI gli elementi in acollection finché un elemento non passa l’espressione del blocco di script. Una volta che un elemento supera l’espressione scriptblock, il metodo Where
interrompe l’elaborazione degli elementi.
Ciò significa che si riceve il primo set di elementi non passing dalWhere
metodo., Dopo che un articolo passa, il resto NON viene testato o restituito.
Il numero di articoli restituiti può essere limitato passando un valore all’argomentonumberToReturn
.
Nota
Entrambi Until
e SkipUntil
operano sotto la premessa di NON testare un batchof elementi.
Until
restituisce gli articoli PRIMA del primo passaggio.
SkipUntil
restituisce tutti gli articoli DOPO il primo passaggio, incluso il primo passaggio.,
Dividi
La modalità Split
divide o raggruppa gli elementi della raccolta in due raccolte separate. Quelli che passano l’espressione scriptblock e quelli che non lo fanno.
Se viene specificato un numberToReturn
, la prima raccolta, contiene gli elementi di passaggio, da non superare il valore specificato.
Gli oggetti rimanenti, anche quelli che PASSANO il filtro di espressione, vengono restituiti nella seconda raccolta.,
Ottieni i membri di un array
Per ottenere le proprietà e i metodi di un array, come la proprietà Length e il metodo SetValue, usa il parametro InputObject del cmdlet Get-Member
.
Quando si pipe un array aGet-Member
, PowerShell invia gli elementi oneat un tempo eGet-Member
restituisce il tipo di ogni elemento nella matrice (ignoringduplicates).
Quando si utilizza il parametro InputObject,Get-Member
restituisce i membri dell’array.,
Ad esempio, il seguente comando ottiene i membri del$a
arrayvariable.
È anche possibile ottenere i membri di un array digitando una virgola (,) prima del valore che viene convogliato nel cmdletGet-Member
. La virgola rende la matrice thesecond elemento in una matrice di array. PowerShell pipa gli array una volta ata eGet-Member
restituisce i membri dell’array. Come i prossimi dueesempi.,
Manipolazione di un array
È possibile modificare gli elementi di un array, aggiungere un elemento a un array e combinare i valori di due array in un terzo array.
Per modificare il valore di un particolare elemento in un array, specificare il nome dell’array e l’indice dell’elemento che si desidera modificare, quindi utilizzare l’operatore assignment (=
) per specificare un nuovo valore per l’elemento., Ad esempio, per modificare il valore del secondo elemento nell’array $a
(posizione indice 1) a10, digitare:
È anche possibile utilizzare il metodo SetValue di un array per modificare un valore. L’esempio seguente modifica il secondo valore (posizione indice 1) dell’operatore $a
arrayto 500:
È possibile utilizzare l’operatore +=
per aggiungere un elemento a un array. L’esempio seguente mostra come aggiungere un elemento all’array$a
.,
Nota
Quando si utilizza l’operatore +=
, PowerShell crea effettivamente un nuovo array con i valori dell’array originale e il valore aggiunto. Questo potrebbe causare problemi di prestazioni se l’operazione viene ripetuta più volte o la dimensione dell’array è troppo grande.
Non è facile eliminare elementi da un array, ma è possibile creare un newarray che contiene solo elementi selezionati di un array esistente., Ad esempio,per creare l’array $t
con tutti gli elementi dell’array $a
ad eccezione del valore nella posizione dell’indice 2, digitare:
Per combinare due array in un singolo array, utilizzare l’operatore plus (+
). L’esempio seguente crea due array, li combina e quindi visualizza l’array combinato risultante.
Di conseguenza, l’array$z
contiene 1, 3, 5 e 9.,
Per eliminare un array, assegnare un valore di $null
all’array. Il seguente comando elimina l’array nella variabile$a
.
$a = $null
È anche possibile utilizzare il cmdlet Remove-Item
, ma assegnare un valore di $null
è più veloce, specialmente per array di grandi dimensioni.
Array di zero o uno
A partire da Windows PowerShell 3.0, una raccolta di zero o un oggetto hala proprietà Count e Length. Inoltre, è possibile indicizzare in un array di oneobject., Questa funzione consente di evitare errori di scripting che si verificano quando un comando che prevede una raccolta ottiene meno di due elementi.
I seguenti esempi dimostrano questa funzionalità.
Zero oggetti
Un oggetto
Supporto per l’indicizzazione del sistema.Oggetti Tuple
PowerShell 6.1 ha aggiunto il supporto per l’accesso indicizzato di oggetti Tuple, simile agli array.,Ad esempio:
A differenza degli array e di altri oggetti di raccolta, gli oggetti tuple vengono trattati come oggetti singoli quando vengono passati attraverso la pipeline o da parametri che supportano i raggi di oggetti.
Per ulteriori informazioni, vedere Sistema.Tupla.
Vedi anche
- about_Assignment_Operators
- about_Hash_Tables
- about_Operators
- about_For
- about_Foreach
- about_While