Ein Array in PowerShell verwenden
In den meisten Script-Sprachen und eben auch in PowerShell gibt es den Datentyp Array. In Arrays lassen sich mehrere Werte speichern und über den so genannten Index des Arrays abrufen. Aber ebenfalls kann man Werte suchen, ersetzen, löschen und sogar addieren.
Das Array in PowerShell verwenden
Eigentlich möchte man meinen, dass man in einem Array nur gleiche Datentypen speichern kann. In PowerShell kann man allerdings Datentypen mischen. Somit kann man neben einem normalen String auch ein Datum oder Integer Werte speichern.
Array erstellen
Möchte man ein Array erstellen, welches nur einen bestimmten Datentyp beinhaltet, so wird dieser in PowerShell angegeben. In nachfolgendem Beispiel wird ein Array mit dem Datentyp Integer erstellt und gleichzeitig einige Zahlen als Werte zugewiesen.
[int[]] $yourArray = 1,2,3,4,5
Außerdem lässt sich ein Array in PowerShell auch mit einem @-Zeichen erstellen. In nachfolgendem Beispiel geben wir allerdings keinen Datentyp mit, sodass viele verschiedene Datentypen gespeichert werden können. Zum Erstellen wird das @ verwendet und gleichzeitig wieder Werte von verschiedenen Typen zugewiesen.
$yourArray = @("OK","ERROR",0,1)
Wie man sehen kann, sind nun verschiedene Datentypen gespeichert. Diese lassen sich mit .GetType()
überprüfen.
Wert zu Array hinzufügen
Wie die generelle Zuweisung von Werten zu einem Array funktioniert, haben wir oben beim Erstellen gesehen. Möchte man nun in der Laufzeit des PowerShell Scripts weitere Werte hinzufügen, so kann man einfach den +
Operator verwenden.
$yourArray = $yourArray + 2
Alternativ kann für das Hinzufügen von Werten in Arrays die Kurzschreibweise in PowerShell verwendet werden. Diese wird mit +=
geschrieben. Das Ergebnis bleibt allerdings das Gleiche.
$yourArray += "TEST"
Inhalte und Werte ausgeben
Natürlich möchte man Inhalte von solchen Arrays auch ausgeben, beziehungsweise weiter verarbeiten. Somit müssen die Werte ausgelesen werden. In PowerShell ist das relativ einfach, indem man den Index angibt. Wird kein Index angegeben, wird das komplette Array ausgelesen. Nachfolgend verschiedene Beispiele.
#Alle Inhalte $yourArray #Erster Wert $yourArray[0] #Zweiter Wert $yourArray[1] #Erster und Dritter Wert $yourArray[0,2] #Wert von Index 0 bis 2 (1-3 Wert) $yourArray[0..2] #Letzter Wert $yourArray[-1]
Wird kein Index angegeben, so wird das komplette Array ausgegeben. Ein Index startet (nicht nur in PowerShell) bei 0, somit hat der erste Wert den Index 0, der zweite Wert den Index 1. Möchte man den letzten Inhalt ermitteln, so verwendet man ein -1.
Eine weitere Funktion ist das suchen von Elementen, beziehungsweise das Filtern nach Inhalten. So kann nach einem bestimmten Wort oder Wert gesucht werden. Ein Beispiel nachfolgend im Test-Array $yourArray.
$yourArray -contains "OK" $yourArray -like "*RR*"
Die Abfrage mit -contains
gibt TRUE zurück, die Abfrage mit dem Operator -like
gibt den Inhalt aus, falls dieser gefunden wird. In diesem Beispiel “ERROR”. Außerdem können in PowerShell verschiedenste Operatoren für Arrays verwendet werden.
Arrays sortieren
Ein Array mit gleichen Datentypen kann ganz einfach mit PowerShell sortiert werden. Das einfachste Beispiel ist hier das Sortieren von Integer Werten, beispielsweise von 1-5. Hier wird lediglich nach dem Pipe Sort verwendet. (| Sort
)
$yourArray2 = @(1,4,3,2,5) $yourArray2 | sort
So einfach ist das Array sortiert und die Ausgabe ist korrekt. Natürlich kann aufsteigend, absteigend, oder nach Datei-Endungen sortiert werden, doch hierzu mehr in den PowerShell Optionen zum Sortieren von Daten.
Werte löschen in Arrays
Ein ganzes Array löschen ist in PowerShell nicht möglich. Die Variable kann geleert werden, indem man $NULL zuweist. Somit sind dann keine Werte vorhanden und das Array leer.
$yourArray = $null
Auch das Entfernen von einzelnen Werten erweist sich tatsächlich schwer. Hier muss man einen Umweg machen. Hierzu muss man auf einen Wert filtern, den man löschen möchte und den Rest neu zuweisen.
$yourArray = $yourArray | where {$_ -ne "ERROR"}
Hier werden aus diesem Array alle Werte ausgelesen, welche nicht (-ne) “ERROR” sind und gleichzeitig dem Array wieder zugewiesen. Somit schließt man den Wert “ERROR” aus und hat diesen somit gelöscht.