Lernen von PowerShell Sort-Object mit Beispielen

Die Sortierung von Daten sollte keine übermäßige Aufgabe sein. Wenn Sie nach einer effizienten Möglichkeit suchen, Daten zu sortieren, steht Ihnen das PowerShell Sort-Object-Cmdlet zur Verfügung!

In diesem Tutorial erfahren Sie, wie Sie das PowerShell Sort-Object-Cmdlet verwenden, um Daten zu sortieren, sei es Zahlen, Zeichenketten oder Objekte.

Verabschieden Sie sich vom ständigen Durchforsten Ihrer Daten und sortieren Sie sie effizient in PowerShell!

Voraussetzungen

Stellen Sie sicher, dass Sie für dieses Tutorial eine Maschine mit PowerShell 5.0 oder neuer installiert haben, um den praktischen Demonstrationen folgen zu können. Dieses Tutorial verwendet Windows 10 mit installiertem PowerShell 7.

Daten sortieren mit dem PowerShell Sort-Object-Cmdlet

Je nach Ihren Anforderungen können Sie Daten auf verschiedene Arten basierend auf einer oder mehreren Eigenschaften sortieren. Das Sort-Object-Cmdlet ermöglicht es Ihnen, Daten beispielsweise in aufsteigender oder absteigender Reihenfolge zu sortieren, um die Analyse und Arbeit mit strukturierten Informationen zu erleichtern.

Die grundlegende Syntax des Sort-Object-Cmdlets lautet wie folgt, wobei:

  • <Objekt-zum-Sortieren> – sich auf das Sammeln von Daten bezieht, die sortiert werden sollen, wie z. B. ein Array, eine Liste oder andere Datentypen.
  • <-Parameter> – Ein optionaler Parameter, um die Sortierkriterien anzugeben, der es Ihnen ermöglicht, anzupassen, wie die Sortierung durchgeführt wird.
<Object-to-Sort>|Sort-Object <-Parameter>

Um zu sehen, wie Sie Daten in aufsteigender und absteigender Reihenfolge sortieren können:

1. Öffnen Sie PowerShell und führen Sie den folgenden Befehl aus, der keine Ausgabe liefert, sondern eine Liste von zufälligen ganzen Zahlen in der Variable $numbers definiert.

$numbers = 4, 2, 3, 1, 5

? Beachten Sie, dass Sie in PowerShell nicht nur mit Zahlen und Zeichenketten arbeiten, sondern mit Objekten, da PowerShell eine objektorientierte Sprache und Shell ist.

2. Führen Sie anschließend die folgenden Befehle aus, um die in der Variablen $numbers definierten Zahlen zu sortieren (Sort-Objects) und anzuzeigen (Write-Output).

$sortedNumbers = $numbers | Sort-Object
Write-Output $sortedNumbers

Ohne Parameter anzuhängen, werden die Zahlen in aufsteigender Reihenfolge angezeigt.

Sorting data in ascending order

3. Führen Sie nun dieselben Befehle aus, aber dieses Mal fügen Sie den Parameter -Descending hinzu, um die Zahlen in absteigender Reihenfolge zu sortieren und anzuzeigen.

$sortedNumbers = $numbers | Sort-Object -Descending
Write-Output $sortedNumbers

Die Ausgabe ähnlich wie die unten angezeigte zeigt an, dass die Zahlen in absteigender Reihenfolge sortiert wurden.

Sorting numbers in descending order

Daten nach eindeutigen Werten sortieren

Das Sortieren von Daten in aufsteigender und absteigender Reihenfolge ist eine Sache. Es kann jedoch Situationen geben, in denen Sie Daten basierend auf eindeutigen Werten sortieren müssen. In diesem Kontext bezieht sich „einzigartig“ auf unterschiedliche oder nicht wiederholte Werte innerhalb eines Datensatzes.

Um Daten nach eindeutigen Werten zu sortieren:

Führen Sie die folgenden Befehle aus, um Folgendes auszuführen:

  • Definieren Sie eine Liste von ganzen Zahlen (mit Duplikaten) in der Variablen $numbers.
  • Sortieren Sie die Zahlen nach eindeutigen Werten in absteigender Reihenfolge und speichern Sie das Ergebnis in der Variablen $sortedNumbers.

Beim Sortieren nach eindeutigen Werten ordnen Sie die Daten so an, dass jeder Wert nur einmal im sortierten Ergebnis erscheint, wodurch Duplikate eliminiert werden.

Diese Befehle geben keine Ausgabe zurück, aber Sie werden die sortierten Daten im nächsten Schritt überprüfen.

$numbers = 4, 2, 3, 3, 1, 5, 2
$sortedNumbers = $numbers | Sort-Object -Unique -Descending

Führen Sie nun den Write-Output-Befehl unten aus, um den Inhalt der Variablen $sortedNumbers auszugeben und das Ergebnis zu überprüfen.

Write-Output $sortedNumbers

Im Folgenden sind alle eindeutigen Werte in absteigender Reihenfolge sortiert, und doppelte Werte wurden eliminiert.

Wie Sie sehen können, verbessert das Sortieren nach eindeutigen Werten die Effizienz der Datenanalyse und eliminiert redundante Informationen bei der Arbeit mit großen Datensätzen.

Sorting data by unique values

Daten nach Zeichenfolgen sortieren

Bisher haben Sie gesehen, wie numerische Werte sortiert werden. Aber was ist, wenn Sie mit Zeichenfolgen arbeiten? Keine Sorge. Der Sort-Object-Befehl ermöglicht es Ihnen, Zeichendaten in einer bestimmten Reihenfolge basierend auf Sortierkriterien anzuordnen.

In diesem Zusammenhang bezieht sich ein String auf ein einzelnes Zeichen oder eine Sequenz von Zeichen, wie Wörter, Phrasen oder andere Textdaten. In PowerShell werden Zeichenfolgen dargestellt, indem der Text in Anführungszeichen eingeschlossen wird, entweder einfach (') oder doppelt (").

Führen Sie die folgenden Befehle aus, um ein Array von Zeichenfolgen standardmäßig in aufsteigender (alphabetischer) Reihenfolge zu sortieren.

Das Sortieren von Zeichenfolgen in PowerShell bietet Flexibilität bei der Organisation von Textdaten in einer gewünschten Reihenfolge und ermöglicht eine effiziente Datenmanipulation und -analyse.

# Definieren Sie ein Array von Zeichenfolgen
$strings = "a", "b", "c" 
# Sortieren Sie die Zeichenfolgen standardmäßig in aufsteigender Reihenfolge (ohne Parameter)
$sortedStrings = $strings | Sort-Object
# Zeigen Sie die sortierten Zeichenfolgen an
Write-Output $sortedStrings
Sorting strings in alphabetical order

Führen Sie nun dieselben Befehle aus, sortieren Sie sie jedoch stattdessen in absteigender Reihenfolge -Descending.

# Definieren Sie ein Array von Zeichenfolgen
$strings = "a", "b", "c" 
# Sortieren Sie die Zeichenfolgen in absteigender Reihenfolge
$sortedStrings = $strings | Sort-Object -Descending
# Zeigen Sie die sortierten Zeichenfolgen an
Write-Output $sortedStrings

Diesmal sehen Sie die Ausgabe in umgekehrter Reihenfolge, wie unten gezeigt.

Sorting strings in the reverse order

Daten nach Eigenschaften sortieren

Zweifellos ist das Sortieren von Zeichenfolgen praktisch. Aber in der Regel sollten Sie spezifischer sein, wenn Sie Daten sortieren. Sortieren Sie neben Zeichenfolgen doch Objekte basierend auf ihren Eigenschaften!

Bei der Arbeit mit PowerShell-Objekten besitzt jedes Objekt in der Regel eine oder mehrere Eigenschaften, die Sie zum Sortieren verwenden können. Diese Eigenschaften ermöglichen es Ihnen, Ihre Sortierkriterien entsprechend Ihren Bedürfnissen zu definieren.

Führen Sie die folgenden Befehle aus, um eine Liste aller laufenden Prozesse (Get-Process) in Ihrem System abzurufen und sie nach der Nutzung der CPU zu sortieren. Der Parameter -Descending zeigt das Ergebnis mit den ressourcenintensivsten Prozessen zuerst an.

# Eine Sammlung aller laufenden Prozesse abrufen
$processes = Get-Process

# Die Prozesse basierend auf der CPU-Auslastung in absteigender Reihenfolge sortieren
$sortedProcesses = $processes | Sort-Object -Property CPU -Descending

# Wählen und zeigen Sie den Namen und die CPU-Eigenschaften jedes Prozesses aus
$sortedProcesses | Select-Object Name, CPU
Sorting data by properties

Sortieren von Hash-Tabellen

Das Sortieren von Objekten nach Eigenschaften ist ein Game-Changer bei der Arbeit mit Datenanalyse. Aber was ist mit der Organisation von Daten in Schlüssel-Wert-Paaren wie Hash-Tabellen?

Das Sort-Object-Cmdlet ermöglicht es Ihnen, Hash-Tabellen zu sortieren, um die Datenpräsentation zu verbessern und die Informationsabfrage zu vereinfachen.

Führen Sie den folgenden Code aus, um eine Hashtabelle in ein Array von Schlüssel-Wert-Paaren zu konvertieren und die Hashtabelle nach ihren Schlüsseln zu sortieren.

# Erstellen Sie eine Hashtabelle mit drei Schlüssel-Wert-Paaren
$hashTable = @{
    "C" = "Charlie"
    "A" = "Alpha"
    "B" = "Bravo"
}

# Sortieren Sie die Hashtabelle nach Schlüsseln und speichern Sie das sortierte Ergebnis in $sortedHashTable
$sortedHashTable = $hashTable.GetEnumerator() | Sort-Object -Property Name

# Iterieren Sie durch jeden Eintrag in der sortierten Hashtabelle
foreach ($entry in $sortedHashTable) {
    # Geben Sie das Schlüssel-Wert-Paar aus
    Write-Output "$($entry.Name): $($entry.Value)"
}

Aufgrund der Sortierung der Schlüssel wird die Ausgabe wie folgt aussehen, wobei Sie beobachten können, wie die Ausgabe Schlüssel-Wert-Paare in einer bestimmten Reihenfolge organisiert und anzeigt.

Diese Sortiermethode gewährleistet eine bessere Datenpräsentation und erleichtert das Abrufen von Informationen aus der Hashtabelle.

Sorting hash tables

Abschluss

In diesem Tutorial haben Sie erkundet, wie Sie einzigartige Werte, Zeichenfolgen, Zahlen, Prozesse und sogar Hashtabellen mit dem Sort-Object-Cmdlet sortieren können. Das Sortieren von Daten ist eine Aufgabe, die den Weg für eine aufschlussreichere Datenanalyse ebnet, und mit dem PowerShell Sort-Object-Cmdlet sind Sie auf dem richtigen Weg.

Mit diesem neu erworbenen Wissen können Sie nun sicherstellen, dass Ihre Daten sinnvoll organisiert sind und sie selbstbewusst anderen präsentieren.

Sortieren ist nur eine der vielen wertvollen Fähigkeiten von PowerShell und seinen Cmdlets. Warum erweitern Sie nicht Ihre Fähigkeiten, indem Sie mehr über andere Cmdlets erfahren? Vielleicht erstellen Sie Programmprotokolle mit Tee-Object oder messen Objektgrößen mit Measure-Object?

Source:
https://adamtheautomator.com/powershell-sort-object/