Dies ist eine alte Version des Dokuments!
Inhaltsverzeichnis
Array / Collection
https://www.varonis.com/blog/powershell-array#:~:text=Arrays%20in%20PowerShell%20can%20contain,(sometimes%20confusingly)%20at%200.
Ein Array ist eigentlich eine Sammlung von Werten in einem Datenfeld, am besten vergleichbar mit einer Tabelle, die zeilenweise Werte enthält. Enthält eine Zeile nur einen Wert (eine Spalte), dann ist es ein eindimensionales Array, sind mehrere Werte enthalten ist es ein mehrdimensionales Array.
Da die PowerShell von der Grundidee her ein Werkzeug zur Bearbeitung von Objekten ist (Benutzerkonten, Maschinenkonten, Konfigurationen), findet man in Arrays häufig Objekte mit mehreren Attributen. Deshalb wird in der PowerShell nicht von Arrays, sondern von Collections gesprochen.
Einfache Werte in Arrays
Ein leeres Array erzeugen, dem später dynamisch Inhalt hinzufügt wird:
$data=@()
Ohne die Deklaration mit dem @ wäre es eine Variable, die nur einen Wert aufnehmen könnte. Beim Hinzufügen eines neuen Wertes würden nicht zwei Elemente enthalten sein, sondern der ursprüngliche Wert würde verändert werden.
Ein Array erzeugen und direkt mit einfachen Werten belegen (eindimensional):
$data = @('eins','zwei','drei','vier','fuenf')
PowerShell indexiert die Werte automatisch von 0-2, so dass eine Ausgabe Gesamt oder über den Indexwert möglich ist: Gesamtausgabe:
$data
Ausgabe von Elementen:
$data[0] # 0 gibt das erste Element aus => 1 $data[0,2] # erstes und drittes Element ausgeben $data[1..3] # Elemente 2-4 ausgeben $data[-1] # Letztes Element des Arrays ausgeben
Anzahl der Eintrag in einem Array ausgeben:
$data.count
Einen einzelnen Wert neu belegen
$data[2] = 'Dritter'
Iteratives abarbeiten der einzelnen Einträge:
$data | ForEach-Object {"Item: [$PSItem]"}
Array von Objekten
Ein Array von Objekten wird praktisch genauso behandelt wie ein Array von Werten.
Erzeugen eines Arrays von Objekten mit mehreren Eigenschaften:
$data = @([pscustomobject]@{Vorname='Hein'; Nachname='Blöd'} [pscustomobject]@{Vorname='Bernd'; Nachname='Brot'} [pscustomobject]@{Vorname='Tim'; Nachname='Taler'} [pscustomobject]@{Vorname='Pippi'; Nachname='Langstrumpf'} [pscustomobject]@{Vorname='Laura'; Nachname='Stern'})
Ansprechen von Objekten
$data[0] # erstes Objekt ansprechen $data[0].vorname # Eigenschaft "Vorname" des ersten Objektes ausgeben $data.vorname # Eigenschaft "Vorname" aller Objekte ausgaben $data | ForEach-Object {$_.LastName} # Zeilenweise alle Objekte ausgeben (bearbeiten)
Join - Werte in Arrays verbinden
Über die Anweisung Join werden einzelne Werte des Arrays miteinander Verknüpft.
$data = @(1,2,3,4) $data # Zeilenweise Ausgabe der Elemente $data -join '-' # Alle Elemente aneinandersetzen und zusammenausgeben $data[0,2] -join '\' # Elemente 1 und 3 zusammensetzen und durch einen "\" trennen (Bei Pfadangaben interessant)
contains - Suche nach einem String
Bei der Suche in einem Feld wird das ganze Objekt ausgegeben, die einzelnen Attribute aber nicht durchsucht.
$data -contains "Brot" # => False $data.nachname -contains "brot" # => True
