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