Zum Inhalt springen

Arrays, Hashtables und PSCustomObject

Core
Lernziele
  • Arrays, Hashtables und PSCustomObject erzeugen und auslesen
  • Die passende Struktur für eine Aufgabe wählen

In PowerShell stehen dir verschiedene Datenstrukturen zur Verfügung, um Daten strukturiert zu speichern und zu verarbeiten. In diesem Dokument betrachten wir im Detail Arrays, Hashtables und PSCustomObject. Diese Datenstrukturen ermöglichen es dir, Informationen effizient zu organisieren und für die weitere Verarbeitung aufzubereiten.

Arrays sind geordnete Sammlungen von Elementen. Sie werden häufig verwendet, um Listen von Werten (z. B. Zahlen, Strings) zu speichern.
PowerShell-Arrays werden mit der @()-Syntax definiert.

Array

Terminal-Fenster
# Array-Erstellung mit Zahlen
$zahlen = @(1, 2, 3, 4, 5)
# Array-Erstellung mit Strings
$namen = @("Alice", "Bob", "Charlie")
# Ausgabe des gesamten Arrays
Write-Output $zahlen
Write-Output $namen
# Zugriff auf einzelne Elemente (Index beginnt bei 0)
Write-Output "Erstes Element in 'zahlen': $($zahlen[0])"
Write-Output "Zweiter Name: $($namen[1])"
Terminal-Fenster
$namen.Count # Anzahl der Elemente
$namen += "Dora" # Element anhängen (erzeugt intern ein neues Array)
1..5 # Zahlenbereich: 1, 2, 3, 4, 5

Hashtables speichern Daten als Schlüssel-Wert-Paare und sind vergleichbar mit Dictionaries in anderen Sprachen. Sie eignen sich hervorragend zur strukturierten Speicherung von zusammengehörigen Daten.

Hashtable

Terminal-Fenster
# Erstellung eines Hashtables
$person = @{
"Name" = "Alice"
"Alter" = 28
"Beruf" = "Entwicklerin"
}
# Ausgabe des gesamten Hashtables
Write-Output $person
# Zugriff auf einen Wert über den Schlüssel
Write-Output "Name: $($person['Name'])"
  • Schlüssel sind standardmäßig case-insensitive.
  • Du kannst den Inhalt eines Hashtables auch dynamisch erweitern:
Terminal-Fenster
# Hinzufügen eines neuen Schlüssel-Wert-Paares
$person["Stadt"] = "Berlin"
Write-Output $person

Mit PSCustomObject kannst du benutzerdefinierte Objekte erstellen, die strukturierte Daten in Form von Eigenschaften enthalten. Diese Objekte eignen sich ideal zur Ausgabe in Tabellenform und zur Übergabe in der Pipeline.

Terminal-Fenster
# Erstellung eines benutzerdefinierten Objekts
$customPerson = [PSCustomObject]@{
Name = "Bob"
Alter = 35
Beruf = "Designer"
Stadt = "Berlin"
}
# Ausgabe des Objekts
Write-Output $customPerson

PSCustomObject-Instanzen lassen sich hervorragend mit Cmdlets wie Select-Object, Format-Table oder Export-Csv weiterverarbeiten:

Terminal-Fenster
# Beispiel: Ausgabe als Tabelle
$customPerson | Format-Table -AutoSize
  • Arrays:
    Verwende Arrays, um geordnete Listen von Werten zu speichern. Achte darauf, dass der Datentyp der Elemente (Zahl oder String) die Interpretation von Operationen beeinflusst.

  • Hashtables:
    Hashtables ermöglichen das Speichern von Daten als Schlüssel-Wert-Paare und eignen sich für strukturierte Informationen, bei denen ein direkter Zugriff über den Schlüssel erforderlich ist.

  • PSCustomObject:
    Mit PSCustomObject kannst du benutzerdefinierte Objekte mit beliebigen Eigenschaften erstellen. Dies ist besonders nützlich, wenn du strukturierte Ergebnisse erzeugen und in der Pipeline weiterverarbeiten möchtest.

Diese Datenstrukturen sind die Grundlage für viele fortgeschrittene Skripting- und Automatisierungsaufgaben in PowerShell. Mit Hilfe von Abbildungen, die den Aufbau und die Unterschiede visuell darstellen, kannst du dein Verständnis dieser Konzepte noch weiter vertiefen.