THEMA
about_Arrays
KURZBESCHREIBUNG
Beschreibt eine kompakte Datenstruktur zum Speichern von
Datenelementen
DETAILBESCHREIBUNG
Arrays sind Datenstrukturen zum Speichern einer Auflistung von
Datenelementen des gleichen Typs. Windows PowerShell unterstützt
Datenelemente wie "string", "int" (32-Bit-Ganzzahl), "long"
(64-Bit-Ganzzahl), "bool" (Boolesch), "byte" und weitere
Microsoft .NET Framework-Objekttypen.
ERSTELLEN UND INITIALISIEREN EINES ARRAYS
Weisen Sie einer Variablen mehrere Werte zu, um ein Array zu
erstellen und zu initialisieren.
Die im Array gespeicherten Werte werden durch Kommas getrennt und
durch den Zuweisungsoperator (=) vom Variablennamen getrennt.
Geben Sie z. B. Folgendes ein, um das Array "$A" zu erstellen, das die
numerischen Werte (int) 22, 5, 10, 8, 12, 9, 80 enthält:
$A = 22,5,10,8,12,9,80
Sie können ein Array auch mithilfe des Bereichsoperators (..)
erstellen und initialisieren. Beispiel: Das Array "$B" mit den
Werten 5 bis 8 wird mit folgendem Befehl erstellt und initialisiert:
$B = 5..8
Das Array "$B" enthält nun die vier Werte 5, 6, 7 und 8.
Wenn kein Datentyp angegeben wird, erstellt Windows PowerShell
jedes Array als Objektarray (Typ: "object[]"). Sie können den
Datentyp eines Arrays mit der GetType()-Methode bestimmen. Der
Datentyp des Arrays "$a" wird beispielsweise wie folgt bestimmt:
$a.gettype()
Wenn Sie ein stark typisiertes Array erstellen möchten, d. h. ein
Array, das nur Werte eines bestimmten Typs enthalten darf,
wandeln Sie die Variable als Arraytyp um, z. B. string[], long[]
oder int32[]. Zum Umwandeln eines Arrays geben Sie zuerst den
Arraytyp in Klammern und anschließend den Variablennamen ein. Ein
32-Bit-Ganzzahlarray mit dem Namen "$ia", das die ganzen Zahlen
1500, 2230, 3350 und 4000 enthält, erstellen Sie beispielsweise
wie folgt:
[int32[]]$ia = 1500,2230,3350,4000
Das Array "$ia" kann nun ausschließlich ganze Zahlen enthalten.
Sie können Arrays erstellen, die in jeden von .NET Framework
unterstützten Typ umgewandelt werden können. Beispielsweise
besitzen die von "Get-Process" zur Darstellung von Prozessen
abgerufenen Objekte den Typ "System.Diagnostics.Process". Ein
stark typisiertes Array mit Prozessobjekten erstellen Sie mit
folgendem Befehl:
[Diagnostics.Process[]]$zz = Get-Process
Arrays können mit der Ausgabe eines Cmdlets, einer Funktion oder einer
Anweisung aufgefüllt werden. Durch die folgende Anweisung wird z. B.
ein Array mit den Prozessen erstellt, deren Name mit den Buchstaben
"co" beginnt und die auf dem aktuellen Computer ausgeführt werden:
$LocalProcesses = get-process co*
Wenn von der Anweisung nur ein einziger Prozess abgerufen wird,
stellt die $LocalProcesses-Variable kein Array dar. Um
sicherzustellen, dass mit dem Befehl ein Array erstellt wird,
verwenden Sie den Arrayteilausdruckoperator (@), wie im folgenden
Beispiel veranschaulicht:
$LocalProcesses = @(get-process co*)
Selbst wenn vom Befehl ein einziger Prozess zurückgegeben wird,
ist die $LocalProcesses-Variable ein Array. Auch wenn das Array
über nur ein Element verfügt, kann es wie jedes andere Array behandelt
werden. Dem Array können beispielsweise weitere Objekte hinzugefügt
werden. Weitere Informationen finden Sie unter "about_Operators".
LESEN EINES ARRAYS
Sie können auf ein Array mithilfe des entsprechenden
Variablennamens wie "$A" oder "$a" verweisen. Windows PowerShell
unterscheidet nicht zwischen Groß- und Kleinschreibung.
Wenn Sie alle Elemente im Array anzeigen möchten, geben Sie den
Namen des Arrays ein. Beispiel:
$a
Sie können auf die Elemente in einem Array verweisen, indem Sie
einen Index beginnend mit der Position 0 verwenden. Schließen Sie
die Indexnummer in Klammern ein. Wenn Sie beispielsweise das erste
Element im Array "$a" anzeigen möchten, geben Sie Folgendes ein:
$a[0]
Um das dritte Element im Array "$a" anzuzeigen, geben Sie
Folgendes ein:
$a[2]
Bei negativen Zahlen beginnt die Zählung am Ende des Arrays. "-1"
bezieht sich demzufolge auf das letzte Element des Arrays. Die
letzten drei Elemente des Arrays werden daher mit folgendem
Befehl angezeigt:
$a[-3..-1]
Diese Notation sollte jedoch mit Bedacht verwendet werden.
$a[0..-2]
Dieser Befehl bezieht sich nicht auf alle Elemente des Arrays mit
Ausnahme des letzten.
Diese Notation bezieht sich auf das erste sowie das letzte und
das vorletzte Element im Array.
Sie können mithilfe des Bereichsoperators eine Teilmenge aller
Werte im Array anzeigen. Wenn Sie beispielsweise die
Datenelemente an der Indexposition 1 bis 3 anzeigen möchten,
geben Sie Folgendes ein:
$a[1..3]
Mit dem Plus-Operator (+) können Sie einen Bereich mit einer
Liste von Elementen in einem Array verbinden. Wenn Sie
beispielsweise die Datenelemente an den Indexpositionen 0 und 2
sowie 4 bis 6 anzeigen möchten, geben Sie Folgendes ein:
$a[0,2+4..6]
Um die Anzahl der Elemente in einem Array zu bestimmen,
kombinieren Sie den Bereich mit der length-Eigenschaft eines
Arrays. Wenn Sie beispielsweise die Elemente von der
Indexposition 2 bis zum Ende des Arrays anzeigen möchten, geben
Sie Folgendes ein:
$a[2..($a.length-1)]
Die Länge wird auf -1 festgelegt, da der Index an der Position 0
beginnt. In einem aus drei Elementen bestehenden Array (1,2,3)
ist der Index des dritten Elements daher 2, d. h. die Länge des
Arrays minus eins.
Sie können auf Elemente in einem Array auch mit Schleifen-
konstrukten wie Foreach-, For- und While-Schleifen verweisen.
Wenn Sie beispielsweise die Elemente im Array "$a" mit einer
Foreach-Schleife anzeigen möchten, geben Sie Folgendes ein:
foreach ($element in $a) {$element}
Die Foreach-Schleife durchläuft das Array und gibt alle Werte im
Array zurück, bis das Ende des Arrays erreicht ist.
Mithilfe einer For-Schleife können Zähler während der Überprüfung
von Elementen in einem Array erhöht werden. Wenn Sie
beispielsweise jeden zweiten Wert in einem Array mit einer
For-Schleife abrufen möchten, geben Sie Folgendes ein:
for ($i = 0; $i -le ($a.length - 1); $i += 2) {$a[$i]}
Mit einer While-Schleife können Sie die Elemente in einem Array
anzeigen, bis eine festgelegte Bedingung nicht mehr zutrifft. Wenn Sie
beispielsweise die Elemente im Array "$a" bei einem kleineren
Arrayindex als 4 anzeigen möchten, geben Sie Folgendes ein:
$i=0
while($i -lt 4) {$a[$i]; $i++}
Sie können sich anhand des InputObject-Parameters des Cmdlets
"Get-Member" mit den Eigenschaften und Methoden eines Arrays wie
der Length-Eigenschaft und der SetValue-Methode vertraut machen.
Wenn Sie ein Array über die Pipeline an "Get-Member" übergeben,
werden die Informationen über die Objekte im Array angezeigt.
Wenn Sie den InputObject-Parameter verwenden, werden
Informationen über das Array angezeigt.
Um die Eigenschaften und Methoden des Arrays "$a" zu ermitteln,
geben Sie Folgendes ein:
get-member -inputobject $a
BEARBEITEN EINES ARRAYS
Sie können die Elemente in einem Array ändern, Elemente
hinzufügen und Werte aus zwei Arrays in einem dritten Array
kombinieren.
Wenn Sie den Wert eines bestimmten Elements in einem Array ändern
möchten, geben Sie den Namen des Arrays und den Index des zu
ändernden Elements an. Geben Sie anschließend mit dem
Zuweisungsoperator (=) einen neuen Wert für das Element an. Wenn
Sie beispielsweise den Wert des zweiten Elements im Array "$a"
(Indexposition 1) in 10 ändern möchten, geben Sie Folgendes ein:
$a[1] = 10
Sie können mit der SetValue-Methode eines Arrays auch Werte ändern. Im
folgenden Beispiel wird der zweite Wert (Indexposition 1) des Arrays
"$a" in 500 geändert:
$a.SetValue(500,1)
Sie können an ein vorhandenes Array mit dem Operator "+=" ein
Element anfügen.
Mit diesem Operator kann auch zu einem vorhandenen Wert addiert
werden. Wenn der Operator für das Element eines Arrays verwendet
wird, wird der Wert des Elements erhöht. Wenn der Operator für
das Array selbst verwendet wird, wird der Wert angefügt. Wenn Sie
beispielsweise an das Array "$a" ein Element mit dem Wert 200
anfügen möchten, geben Sie Folgendes ein:
$a += 200
Die Elemente eines Arrays können nicht ohne Weiteres gelöscht
werden. Sie können jedoch ein neues Array erstellen, das nur die
ausgewählten Elemente eines vorhandenen Arrays enthält. Wenn Sie
beispielsweise das Array "$t" mit allen Elementen im Array "$a",
jedoch ohne den Wert an der Indexposition 2 erstellen möchten,
geben Sie Folgendes ein:
$t = $a[0,1 + 3..($a.length - 1)]
Sie können zwei Arrays mit dem Plus-Operator (+) zu einem Array
zusammenführen. Im folgenden Beispiel werden zwei Arrays erstellt und
zusammengeführt. Anschließend wird das zusammengeführte Array angezeigt.
$x = 1,3
$y = 5,9
$z = $x + $y
Das Array "$z" enthält nun die Werte 1, 3, 5 und 9.
Um ein Array zu löschen, können Sie mit dem Cmdlet "Remove-Item"
die Variable löschen, die das Array enthält. Mit dem folgenden
Befehl wird das Element "a" in der Variablen "drive" angegeben.
remove-item variable:a
(Weitere Informationen über die Variable "drive" finden Sie im
Hilfethema zum Variablenanbieter.)
SIEHE AUCH
about_Assignment_Operators
about_Hash_Tables
about_Operators
about_For
about_Foreach
about_While