Wie man doppelte Werte aus einem PowerShell-Array entfernt

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

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.

Genießen Sie unsere Tutorials? Abonnieren Sie DelftStack auf YouTube, um uns bei der Erstellung weiterer hochwertiger Videoanleitungen zu unterstützen. Abonnieren
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

Verwandter Artikel - PowerShell Array