Questa è una domanda che ricevo piuttosto frequentemente, quindi ho pensato di scrivere un articolo a riguardo. Come suggerisce il titolo, mostrerò come è possibile aggiungere o rimuovere elementi a un array PowerShell una volta creato.
Array PowerShell
Iniziamo con la definizione di un array come viene dalla documentazione di PowerShell:
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 ha alcune proprietà degli array.
Creare un array in PowerShell è molto semplice e molto probabilmente lo hai già fatto quando, ad esempio, ottieni un elenco di utenti da Active Directory
$adUsers = Get-AdUser -Filter '*' -Server $adDomainController
Quanto sopra restituirà un array di oggetti AD contenenti tutti gli utenti corrispondenti al filtro utilizzato.,
naturalmente, è possibile inizializzare un array vuoto con la seguente sintassi
$myArray = @()# Specify object type$myArray = @()
Il inizializzare un array vuoto che possiamo, per esempio, riempire con un ANNUNCIO query o aggiunta di elementi statici come questo
$myArray = (1,2,3,4,5)
di cui sopra si aggiungono elementi da 1 a 5 per myArray oggetto istanziare un nuovo oggetto con una lunghezza di 5
PowerShell Aggiungere Elementi ad un Array
Abbiamo visto come creare e assegnare valori ad un array ma cosa succede se si desidera aggiungere un sesto elemento a myArray?, Se provi quanto segue
$myArray.Add(6)
Fallirà con la seguente eccezione
L’eccezione precedente viene generata come un array PowerShell è una raccolta di dimensioni fisse e l’errore sta dicendo solo che, non può essere esteso.,
Una soluzione comune è quella di usare l’operatore += come per esempio
$myArray += 6# Print array's length$myArray.length6
Quando si utilizza l’operatore += cosa succede sotto il cofano è
- PowerShell crea un nuovo array con gli stessi elementi del vecchio plus il nuovo elemento
- PowerShell esistenti verranno sovrascritti array con il nuovo contenuto
Tutto questo è trasparente per l’utente, in modo che non si vedrà alcuna differenza.,
Aggiungere Elementi ad un Array – Inserire ArrayList
Se si desidera evitare tutte le operazioni di copia/spostamento dei dati è possibile creare un’istanza myArray come un ArrayList che è dinamico e permettono di aggiungere o rimuovere elementi al volo
allo stesso modo è possibile rimuovere elementi da un ArrayList come questo
# Will corresponding item by index$myArrayList.RemoveAt(1)
Nota: Rimuovere metodo accetta elemento con valore 1 nell’esempio di cui sopra si riferisce al valore dell’elemento di indice.,
Cast di sopprimere Aggiungere il metodo di stampa a new array di lunghezza
Creare un Elenco di Matrice il modo alternativo
L’esempio chiamerà il Nuovo Oggetto metodo per creare un’istanza di un nuovo ArrayList ma questo è relativamente costoso in termini di risorse di calcolo in modo che il sopra può essere riscritto come:
$myArray = @()
oltre ad essere più breve, ha il vantaggio di evitare la performance negativa ha colpito di Nuovo Oggetto e l’ottimizzazione del codice è sempre una buona idea, soprattutto quando si lavora con i più grandi script.,34f072bc0″>
Note di Chiusura
Durante la scrittura del codice, pur non essendo richiesto da PowerShell, cerco sempre dichiarare il tipo di oggetto che è utile conoscere, in ogni momento, Proprietà e Metodi supportati dall’oggetto così ho sempre scrivere
$myString = 'Some Text'
Piuttosto che
$myString = 'Some Text'
Questo non è richiesto da PowerShell, ma migliora la leggibilità del codice stesso e semplifica l’utilizzo di un oggetto dichiarato 800/900 righe nel codice, senza dover tornare alla variabile dichiarazione.,
Leave a Reply