Wie man doppelte Werte aus einem PowerShell-Array entfernt
-
Verwenden Sie
Select-Object
, um doppelte Werte aus einem PowerShell-Array zu entfernen -
Verwenden Sie
Sort-Object
, um doppelte Werte aus einem PowerShell-Array zu entfernen -
Verwenden Sie
Get-Unique
, um Duplikate aus einem PowerShell-Array zu entfernen -
Verwenden Sie
Hashtable
, um Duplikate aus einem PowerShell-Array zu entfernen - Fazit

Arrays sind grundlegende Datenstrukturen in PowerShell, die es Ihnen ermöglichen, Sammlungen von Elementen zu speichern, unabhängig davon, ob diese Elemente vom gleichen oder unterschiedlichen Typ sind. In verschiedenen Skriptszenarien können Sie auf die Notwendigkeit stoßen, doppelte Elemente aus einem Array zu entfernen.
Dieses Tutorial wird verschiedene Methoden vorstellen, um Duplikate aus einem PowerShell-Array zu entfernen.
Verwenden Sie Select-Object
, um doppelte Werte aus einem PowerShell-Array zu entfernen
Das Cmdlet Select-Object
wird verwendet, um bestimmte Eigenschaften eines Objekts oder einer Menge von Objekten auszuwählen. Sie können auch eindeutige Objekte an einer bestimmten Stelle in einem Array auswählen.
Der Parameter -Unique
gibt an, dass nur ein einzelnes Mitglied ausgewählt wird, wenn identische Eigenschaften und Werte in Objekten vorhanden sind. Es ist größensensitiv, sodass Zeichenfolgen, die sich nur in der Groß- und Kleinschreibung unterscheiden, ebenfalls als eindeutige Werte betrachtet werden.
Wir haben ein Array $data
erstellt, das doppelte Elemente mit unterschiedlichen Schreibweisen enthält.
$data = @("powershell", "arrays", "powershell", "Arrays", "PowerShell")
Das folgende Beispiel wählt eindeutige Werte aus dem Array aus und speichert sie in der Variable $data
. Infolgedessen werden die doppelten Elemente aus dem Array entfernt.
Befehl:
$data = $data | Select-Object -Unique
$data
Ausgabe:
powershell
arrays
Arrays
PowerShell
Es entfernt die doppelte Zeichenfolge "powershell"
, entfernt jedoch nicht "PowerShell"
, da es einen großgeschriebenen Buchstaben in der Zeichenfolge gibt.
Verwenden Sie Sort-Object
, um doppelte Werte aus einem PowerShell-Array zu entfernen
Das Cmdlet Sort-Object
sortiert Objekte in aufsteigender oder absteigender Reihenfolge basierend auf ihren Eigenschaftswerten. Mit Sort-Object
können Sie auch den Parameter -Unique
verwenden, um die Duplikate aus den Objekten zu entfernen.
Es ist jedoch nicht groß-/kleinschreibungsempfindlich, sodass Zeichenfolgen, die sich nur in der Groß- und Kleinschreibung unterscheiden, auch als gleich betrachtet werden. Das folgende Beispiel entfernt die doppelten Elemente aus einem Array und speichert sie in der Variable $a
.
Befehl:
$a = @("powershell", "arrays", "powershell", "Arrays", "PowerShell")
$a = $a | Sort-Object -Unique
$a
Ausgabe:
Arrays
PowerShell
Es entfernt "Arrays"
und "PowerShell"
, obwohl sie sich nur in den Zeichenfällen unterscheiden. Wenn Sie Sort-Object
groß-/kleinschreibungsempfindlich machen möchten, können Sie den Parameter -CaseSensitive
verwenden.
Befehl:
$b = @("powershell", "arrays", "powershell", "Arrays", "PowerShell")
$b = $b | Sort-Object -Unique -CaseSensitive
$b
Ausgabe:
arrays
Arrays
powershell
PowerShell
Jetzt entfernt die Ausgabe nur das "powershell"
, da es die einzige Variable ist, die ein Duplikat hat (groß-/kleinschreibungsempfindlich).
Verwenden Sie Get-Unique
, um Duplikate aus einem PowerShell-Array zu entfernen
Das Cmdlet Get-Unique
erhält eindeutige Elemente aus einer sortierten Liste. Es vergleicht jedes Element in einer sortierten Liste mit dem nächsten Element, entfernt Duplikate und gibt nur ein Mitglied jedes Elements zurück.
Dieses Cmdlet funktioniert nur, wenn die Liste sortiert ist. Sie können das Cmdlet Sort-Object
verwenden, um Objekte nach Eigenschaftswerten zu sortieren.
Das folgende Beispiel verwendet das Cmdlet Get-Unique
, um doppelte Elemente aus dem Array $sort
nach dem Sortieren der Array-Elemente mit Sort-Object
zu entfernen.
Befehl:
$c = @("powershell", "arrays", "powershell", "Arrays", "PowerShell")
$c = $c | Sort-Object | Get-Unique
$c
Ausgabe:
Arrays
arrays
PowerShell
powershell
In dieser Ausgabe wird das "powershell"
entfernt.
Das Get-Unique
ist groß-/kleinschreibungsempfindlich, sodass Zeichenfolgen, die sich nur in der Groß- und Kleinschreibung unterscheiden, ebenfalls als eindeutige Werte betrachtet werden. Auf diese Weise können Sie doppelte Elemente aus einem Array in PowerShell einfach entfernen.
Verwenden Sie Hashtable
, um Duplikate aus einem PowerShell-Array zu entfernen
PowerShell erlaubt es Ihnen, eine Hashtable
zu verwenden, um Duplikate effizient zu entfernen. Eine Hashtable
speichert Schlüssel-Wert-Paare, bei denen die Schlüssel eindeutig sind, und indem Sie eine Hashtable
erstellen und die Array-Elemente als Schlüssel verwenden, können Sie Duplikate automatisch entfernen.
Das folgende Beispiel initialisiert eine leere Hashtable
($uniqueHash
) und iteriert dann durch das Array, wobei jedes Element als Schlüssel in der Hashtable
festgelegt wird. Da Schlüssel eindeutig sein müssen, werden Duplikate automatisch entfernt.
Das Ergebnis wird in der Variablen $uniqueArray
gespeichert.
$array = @("powershell", "arrays", "powershell", "Arrays", "PowerShell")
$uniqueHash = @{}
$array | ForEach-Object { $uniqueHash[$_] = $true }
$uniqueArray = $uniqueHash.Keys
$uniqueArray
Ausgabe:
powershell
arrays
In dieser Ausgabe werden die Duplikate mit Hilfe einer Hashtable
entfernt und die verbleibenden Werte werden ausgegeben. Bitte beachten Sie, dass die Verwendung einer Hashtable
, um Duplikate zu entfernen, die Groß-/Kleinschreibung der Werte nicht berücksichtigt.
Fazit
In PowerShell ist die Verwaltung von doppelten Werten in Arrays eine häufige Aufgabe, und dieser Artikel hat mehrere Methoden vorgestellt, um dies zu erreichen. Durch die Verwendung der Cmdlets Select-Object
, Sort-Object
und Get-Unique
, sowie durch die Nutzung von Hashtables
, können Sie Ihren Ansatz an Ihre spezifischen Anforderungen anpassen, ob Sie eine groß-/kleinschreibungsempfindliche oder nicht groß-/kleinschreibungsempfindliche Entfernung von Duplikaten benötigen.