about_Arrays

Letzte Aktualisierung: Mai 2014

Betrifft: Windows PowerShell 2.0, Windows PowerShell 3.0, Windows PowerShell 4.0, Windows PowerShell 5.0

Einführung hier einfügen.

THEMA

about_Arrays

KURZE BESCHREIBUNG

Beschreibt Arrays, die als Datenstrukturen zum Speichern von Sammlungen von Elementen entwickelt wurden.

LANGE BESCHREIBUNG

Ein Array ist eine Datenstruktur, die entwickelt wurde, um eine Sammlung von Elementen zu speichern. Die Elemente können der gleichen Typ oder verschiedene Typen haben.

Ab Windows PowerShell® 3.0 hat eine Sammlung von null oder einem Objekt einige Eigenschaften von Arrays.

ERSTELLEN UND INITIALISIEREN EINES ARRAYS

Zum Erstellen und Initialisieren eines Arrays weisen Sie einer Variablen mehrere Werte zu. Die im Array gespeicherten Werte sind durch Kommas getrennt und von den Namen der Variablen durch den Zuweisungsoperator (=) getrennt.

Um z. B. ein Array mit dem Namen $A zu erstellen, das die sieben numerischen (Ganzzahl-) Werte 22, 5, 10, 8, 12, 9 und 80 enthält, geben Sie ein:

$A = 22,5,10,8,12,9,80

Sie können auch den Bereichsoperator (..) verwenden, um ein Array zu erstellen und zu initialisieren. Um z. B. ein Array namens „$B“ zu erstellen und zu initialisieren, das die Werte 5 bis 8 enthält, geben Sie ein:

$B = 5..8

Im Ergebnis dessen enthält $B vier Werte: 5, 6, 7 und 8.

Wenn kein Datentyp angegeben ist, erstellt Windows PowerShell jedes Array als Objekt-Array (Typ: System.Object[]). Um den Datentyp eines Arrays zu ermitteln, verwenden Sie die GetType()-Methode. Um z. B. den Datentyp des $a-Arrays zu ermitteln, geben Sie ein:

$a.GetType()

Um ein stark typisiertes Array zu erstellen, d. h. ein Array, das nur Werte eines bestimmten Typs enthalten kann, wandeln Sie die Variable in einen Array-Typ um, z. B. string[], long[] oder int32[]. Zur Umwandlung eines Arrays muss vor dem Variablennamen ein Array-Typ in eckigen Klammern stehen. Um z. B. ein 32-Bit-Ganzzahl-Array mit dem Namen „$ia“ zu erstellen, das vier Ganzzahlen (1500, 2230, 3350 und 4000) enthält, geben Sie ein:

[int32[]]$ia = 1500,2230,3350,4000

Im Ergebnis dessen kann das $ia-Array nur Ganzzahlen enthalten.

Sie können Arrays erstellen, die in jeden unterstützte Typ in Microsoft .NET Framework umgewandelt wurden. So haben z. B. die Objekte, die Get-Process abruft, um Prozesse zu repräsentieren, den Typ „System.Diagnostics.Process“. Um ein stark typisiertes Array aus Process-Objekten zu erstellen, geben Sie den folgenden Befehl ein:

[Diagnostics.Process[]]$zz = Get-Process

DER ARRAY-UNTERAUSDRUCK-OPERATOR

Der Array-Unterausdruck-Operator erstellt ein Array, selbst wenn es null oder ein Objekt enthält.

Die Syntax des Array-Operators lautet wie folgt:

@( ... )

Mit dem Array-Operator können Sie ein Array mit null oder einem Objekt erstellen.

PS C:\>$a = @("One")
PS C:\>$a.Count
1
PS C:\>$b = @()
PS C:\>$b.Count
0

Der Array-Operator ist besonders in Skripts nützlich, wenn Sie Objekte abrufen, aber nicht wissen, wie viele Objekte Sie erhalten werden.

PS C:\> $p = @(Get-Process Notepad)

Weitere Informationen zum Array-Unterausdruck-Operator finden Sie unter „about_Operators“.

LESEN EINES ARRAYS

Sie können auf ein Array verweisen, indem Sie dessen Variablennamen verwenden. Um alle Elemente in dem Array anzuzeigen, geben Sie den Array-Namen ein. Beispiel:

$a

Sie können auf die Elemente in einem Array verweisen, indem Sie einen Index verwenden, der an Position 0 beginnt. Schließen Sie die Indexnummer in Klammern ein. Um zum Beispiel das erste Element im $a-Array anzuzeigen, geben Sie ein:

$a[0]

Zum Anzeigen des dritten Elements im $a-Array geben Sie ein:

$a[2]

Bei negativen Zahlen erfolgt die Zählung vom Ende des Arrays. So verweist z. B. „-1“ auf das letzte Element des Arrays. Um die letzten drei Elemente des Arrays anzuzeigen, geben Sie ein:

$a[-3..-1]

Seien Sie bei der Verwendung dieser Notation jedoch vorsichtig.

$a[0..-2]

Dieser Befehl verweist nicht auf alle Elemente des Arrays, mit Ausnahme des letzten. Er verweist auf das erste, letzte und vorletzte Element in dem Array.

Mit dem Bereichsoperator können Sie eine Teilmenge aller Werte in einem Array anzeigen. Geben Sie z. B. zum Anzeigen der Datenelemente an den Indexpositionen 1 bis 3 ein:

$a[1..3]

Mit dem Plus-Operator (+) können Sie einen Bereich mit einer Liste von Elementen in einem Array kombinieren. Um z. B. die Elemente an den Indexposition 0, 2 und 4 bis 6 anzuzeigen, geben Sie ein:

$a[0,2+4..6]

Um zu ermitteln, wie viele Elemente sich in einem Array befinden, verwenden Sie die Length-Eigenschaft oder dessen Count-Alias.

$a.Count

Sie können außerdem Schleifenanweisungen wie z. B. ForEach, For und While-Schleifen verwenden, um auf die Elemente in einem Array zu verweisen. Um z. B. eine ForEach-Schleife zu verwenden, um die Elemente im $a-Array anzuzeigen, geben Sie ein:

foreach ($element in $a) {$element}

Die Foreach-Schleife durchläuft das Array und gibt jeden Wert im Array zurück, bis das Ende des Arrays erreicht ist.

Die For-Schleife ist nützlich, wenn Sie beim Überprüfen der Elemente in einem Array Zähler erhöhen. Um z. B. eine For-Schleife zu verwenden, die jeden zweiten Wert in einem Array zurückgibt, geben Sie ein:

for ($i = 0; $i -le ($a.length - 1); $i += 2) {$a[$i]}

Sie können Sie eine While-Schleife verwenden, um die Elemente in einem Array anzuzeigen, bis eine definierte Bedingung nicht mehr erfüllt ist. Um z. B. die Elemente im $a-Array anzuzeigen, während der Array-Index kleiner als 4 ist, geben Sie ein:

$i=0
while($i -lt 4) {$a[$i]; $i++}

ABRUFEN DER ELEMENTE EINES ARRAYS

Um die Eigenschaften und Methoden eines Arrays abzurufen, wie z. B. die Length-Eigenschaft und die SetValue-Methode, verwenden Sie den InputObject-Parameter des Get-Member-Cmdlets.

Wenn Sie ein Array an Get-Member übergeben, sendet Windows PowerShell die Elemente einzeln, und Get-Member gibt den Typ von jedem Elemente in dem Array zurück (wobei Duplikate ignoriert werden).

Wenn Sie den InputObject-Parameter verwenden, gibt Get-Member die Elemente des Arrays zurück.

Der folgende Befehl ruft z. B. die Elemente des Arrays in der $a-Variablen ab.

Get-Member -InputObject $a

Sie können die Elemente eines Arrays auch abrufen, indem Sie ein Komma (,) vor dem Wert eingeben, der an das Get-Member-Cmdlet übergeben wird. Das Komma macht das Array zum zweiten Element innerhalb eines Arrays aus Arrays. Windows PowerShell übergibt die Arrays einzeln, und Get-Member gibt die Elemente des Arrays zurück.

,$a | Get-Member
,(1,2,3) | Get-Member

BEARBEITEN EINES ARRAYS

Sie können die Elemente in einem Array ändern, einem Array ein Element hinzufügen und die Werte aus zwei Arrays zu einem dritten Array kombinieren.

Um den Wert eines bestimmten Elements in einem Array zu ändern, geben Sie den Array-Namen und den Index des Elements an, das Sie ändern möchten, und geben Sie dann mithilfe des Zuweisungsoperators (=) einen neuen Wert für das Element an. Um z. B. den Wert des zweiten Elements im $a-Array (Indexposition 1) in 10 zu ändern, geben Sie ein:

$a[1] = 10

Sie können auch die SetValue-Methode eines Arrays verwenden, um einen Wert zu ändern. Im folgenden Beispiel wird der zweite Wert (Indexposition 1) des $a-Arrays in 500 geändert:

$a.SetValue(500,1)

Sie können den Operator += verwenden, um einem Array ein Element hinzuzufügen. Bei Verwendung dieses Operators erstellt Windows PowerShell eigentlich ein neues Array mit den Werten des ursprünglichen Arrays und dem hinzugefügten Wert. Um z. B. ein Element mit einem Wert von 200 zum Array in der $a-Variablen hinzuzufügen, geben Sie ein:

$a += 200

Es ist nicht ganz einfach, Elemente aus einem Array zu löschen, aber Sie können ein neues Array erstellen, das nur ausgewählte Elemente eines vorhandenen Arrays enthält. Um z. B. das $t-Array mit allen Elementen aus dem $a-Array mit Ausnahme des Wert an der Indexposition 2 zu erstellen, geben Sie ein:

$t = $a[0,1 + 3..($a.length - 1)]

Um zwei Arrays zu einem Array zu kombinieren, verwenden Sie den Additionsoperator (+). Im folgende Beispiel werden zwei Arrays erstellt und zusammengefasst, und dann wird das resultierende kombinierte Array angezeigt.

$x = 1,3
$y = 5,9
$z = $x + $y

Im Ergebnis dessen enthält das $z-Array die Elemente 1, 3, 5 und 9.

Um ein Array zu löschen, weisen Sie dem Array einen Wert $null zu. Der folgende Befehl löscht das Array in der $a-Variablen.

$a = $null

Sie können auch das Remove-Item-Cmdlet verwenden, aber die Zuweisung eines Werts von $null geht schneller, insbesondere bei großen Arrays.

ARRAYS MIT NULL ODER EINEM OBJEKT

Ab Windows PowerShell 3.0 verfügt eine Sammlung mit null oder einem Objekt über die Count- und Length-Eigenschaften. Sie können auch ein Array aus nur einem Objekt indizieren. Mit diesem Feature können Sie Skriptfehler vermeiden, die auftreten, wenn ein Befehl, der eine Sammlung erwartet, weniger als zwei Elemente abruft.

Die folgenden Beispiele veranschaulichen dieses Feature.

    #Zero objects
    $a = $null
    $a.Count
    0
    $a.Length
    0
    #One object
    $a = 4
    $a.Count
    1
    $a.Length
    1
    $a[0]
    4
    $a[-1]
    4

SIEHE AUCH

about_Assignment_Operators

about_Hash_Tables

about_Operators

about_For

about_Foreach

about_While