Come rimuovere i valori duplicati da un array di PowerShell

  1. Usa Select-Object per rimuovere valori duplicati da un array PowerShell
  2. Usa Sort-Object per rimuovere valori duplicati da un array PowerShell
  3. Usa Get-Unique per rimuovere duplicati da un array PowerShell
  4. Usa Hashtable per rimuovere duplicati da un array PowerShell
  5. Conclusione
Come rimuovere i valori duplicati da un array di PowerShell

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.

Ti piacciono i nostri tutorial? Iscriviti a DelftStack su YouTube per aiutarci a creare altre guide video di alta qualità. Iscriviti
Rohan Timalsina avatar Rohan Timalsina avatar

Rohan is a learner, problem solver, and web developer. He loves to write and share his understanding.

LinkedIn Website

Articolo correlato - PowerShell Array