Come rimuovere i valori duplicati da un array di PowerShell
-
Usa
Select-Object
per rimuovere valori duplicati da un array PowerShell -
Usa
Sort-Object
per rimuovere valori duplicati da un array PowerShell -
Usa
Get-Unique
per rimuovere duplicati da un array PowerShell -
Usa
Hashtable
per rimuovere duplicati da un array PowerShell - Conclusione

Gli array sono strutture dati fondamentali in PowerShell che ti consentono di memorizzare raccolte di elementi, siano essi dello stesso tipo o di tipi diversi. In vari scenari di scripting, potresti incontrare la necessità di eliminare gli elementi duplicati da un array.
Questo tutorial presenterà diversi metodi per rimuovere i duplicati da un array PowerShell.
Usa Select-Object
per rimuovere valori duplicati da un array PowerShell
Il cmdlet Select-Object
viene utilizzato per selezionare proprietà specificate di un oggetto o di un insieme di oggetti. Puoi anche selezionare oggetti unici in una posizione specificata in un array.
Il parametro -Unique
specifica che verrà selezionato solo un singolo membro se proprietà e valori identici sono negli oggetti. È sensibile al maiuscolo, quindi le stringhe che differiscono solo nel caso dei caratteri sono considerate anche valori unici.
Abbiamo creato un array $data
contenente elementi duplicati con casi diversi.
$data = @("powershell", "arrays", "powershell", "Arrays", "PowerShell")
Il seguente esempio seleziona valori unici dall’array e li salva nella variabile $data
. Di conseguenza, gli elementi duplicati verranno rimossi da un array.
Comando:
$data = $data | Select-Object -Unique
$data
Output:
powershell
arrays
Arrays
PowerShell
Rimuove la stringa duplicata "powershell"
ma non rimuove "PowerShell"
perché c’è una lettera maiuscola nella stringa.
Usa Sort-Object
per rimuovere valori duplicati da un array PowerShell
Il cmdlet Sort-Object
ordina gli oggetti in ordine crescente o decrescente in base ai valori delle loro proprietà. Con Sort-Object
, inoltre, puoi utilizzare il parametro -Unique
per rimuovere i duplicati dagli oggetti.
Ma è insensibile al maiuscolo, quindi le stringhe che differiscono solo nel caso dei caratteri sono considerate uguali. Il seguente esempio rimuove gli elementi duplicati da un array e li salva nella variabile $a
.
Comando:
$a = @("powershell", "arrays", "powershell", "Arrays", "PowerShell")
$a = $a | Sort-Object -Unique
$a
Output:
Arrays
PowerShell
Rimuove "Arrays"
e "PowerShell"
, anche se differiscono solo per i casi dei caratteri. Se desideri rendere il Sort-Object
sensibile al maiuscolo, puoi utilizzare il parametro -CaseSensitive
.
Comando:
$b = @("powershell", "arrays", "powershell", "Arrays", "PowerShell")
$b = $b | Sort-Object -Unique -CaseSensitive
$b
Output:
arrays
Arrays
powershell
PowerShell
Ora, l’output rimuove solo "powershell"
poiché è l’unica variabile che ha un duplicato (in modo sensibile al maiuscolo).
Usa Get-Unique
per rimuovere duplicati da un array PowerShell
Il cmdlet Get-Unique
ottiene elementi unici da un elenco ordinato. Confronta ogni elemento in un elenco ordinato con l’elemento successivo, rimuove i duplicati e restituisce solo un membro di ciascun elemento.
Questo cmdlet funziona solo se l’elenco è ordinato. Puoi utilizzare il cmdlet Sort-Object
per ordinare gli oggetti in base ai valori delle proprietà.
Il seguente esempio utilizza il cmdlet Get-Unique
per rimuovere elementi duplicati dall’array $sort
dopo aver ordinato gli elementi dell’array con Sort-Object
.
Comando:
$c = @("powershell", "arrays", "powershell", "Arrays", "PowerShell")
$c = $c | Sort-Object | Get-Unique
$c
Output:
Arrays
arrays
PowerShell
powershell
In questo output, il "powershell"
è rimosso.
Il Get-Unique
è sensibile al maiuscolo, quindi le stringhe che differiscono solo nel caso dei caratteri sono considerate anche valori unici. In questo modo, puoi facilmente rimuovere elementi duplicati da un array in PowerShell.
Usa Hashtable
per rimuovere duplicati da un array PowerShell
PowerShell ti consente di utilizzare un Hashtable
per rimuovere duplicati in modo efficiente. Un Hashtable
memorizza coppie chiave-valore dove le chiavi sono uniche, e creando un Hashtable
e utilizzando gli elementi dell’array come chiavi, puoi automaticamente rimuovere i duplicati.
Il seguente esempio inizializza un Hashtable
vuoto ($uniqueHash
) e poi itera attraverso l’array, impostando ogni elemento come chiave nel Hashtable
. Poiché le chiavi devono essere uniche, i duplicati vengono automaticamente eliminati.
Il risultato è memorizzato nella variabile $uniqueArray
.
$array = @("powershell", "arrays", "powershell", "Arrays", "PowerShell")
$uniqueHash = @{}
$array | ForEach-Object { $uniqueHash[$_] = $true }
$uniqueArray = $uniqueHash.Keys
$uniqueArray
Output:
powershell
arrays
In questo output, i duplicati vengono rimossi utilizzando un Hashtable
e vengono stampati i valori rimanenti. Si prega di notare che l’utilizzo di un Hashtable
per rimuovere duplicati non considera la sensibilità al caso dei valori.
Conclusione
In PowerShell, gestire valori duplicati negli array è un compito comune, e questo articolo ha presentato diversi metodi per raggiungerlo. Utilizzando i cmdlet Select-Object
, Sort-Object
e Get-Unique
, oltre a utilizzare Hashtables
, puoi adattare il tuo approccio per soddisfare i tuoi requisiti specifici, sia che tu abbia bisogno di una rimozione sensibile o insensibile al maiuscolo dei duplicati.