Über Arrays

0 Comments
  • 08/26/2020
  • 14-Minuten zum Lesen
    • S
    • s
    • c

Kurzbeschreibung

Beschreibt arrays, die Daten-Strukturen entwickelt, um storecollections der Elemente.

Lange Beschreibung

Ein Array ist eine Datenstruktur, die eine Sammlung von Elementen speichern soll.Die Elemente können vom gleichen Typ oder verschiedenen Typen sein.

Beginnend in Windows PowerShell 3.,0, eine Sammlung von Null oder einem Objekt hassome Eigenschaften von Arrays.

Erstellen und Initialisieren eines Arrays

Um ein Array zu erstellen und zu initialisieren, weisen Sie einer Variablen mehrere Werte zu. Thevalues in dem array gespeichert sind, getrennt mit einem Komma, getrennt thevariable Namen durch den Zuweisungsoperator (=).,

Um beispielsweise ein Array mit dem Namen $A zu erstellen, das die sieben numerischen (int)Werte von 22, 5, 10, 8, 12, 9, typ:

Das Komma kann auch verwendet werden, um ein einzelnes Elementarray zu initialisieren, indem thecomma vor dem einzelnen Element platziert wird.Um beispielsweise ein einzelnes Elementarray mit dem Namen $B mit dem singlevalue von 7 zu erstellen, geben Sie Folgendes ein:

Sie können ein Array auch mit dem Bereichsoperator erstellen und initialisieren (..).,Im folgenden Beispiel wird ein Array mit den Werten 5 bis 8 erstellt.

Als Ergebnis enthält $C vier Werte: 5, 6, 7 und 8.

Wenn kein Datentyp angegeben ist, erstellt PowerShell jedes Array als objectarray (System.Objekt). Um den Datentyp eines Arrays zu bestimmen, verwenden Sie dieGetType () Methode., Um beispielsweise den Datentyp des Arrays $Azu bestimmen, geben Sie Folgendes ein:

Um ein stark typisiertes Array zu erstellen, dh ein Array, das nur enthalten kannwerte eines bestimmten Typs, wandeln Sie die Variable als Array-Typ um, z. B. string, long oder int32. Um ein Array zu casten, voran dievariable name mit einem Array-Typ in Klammern eingeschlossen., Um beispielsweise ein32-Bit-ganzzahliges Array mit dem Namen $ia mit vier Ganzzahlen (1500, 2230, 3350 und 4000) zu erstellen, geben Sie Folgendes ein:

Als Ergebnis kann das Array $ia nur Ganzzahlen enthalten.

Sie können Arrays erstellen, die in einen beliebigen unterstützten Typ im Microsoft.NET Rahmen. Zum Beispiel sind die Objekte, die Get-Process abruft torepresent Prozesse des Systems.Diagnose.Prozesstyp., Um ein falsch typisiertes Array von Prozessobjekten zu erstellen, geben Sie den folgenden Befehl ein:

Der Array-Unterausdruckoperator

Der Array-Unterausdruckoperator erstellt ein Array aus den Anweisungen insideit. Was auch immer die Anweisung innerhalb des Operators erzeugt, der Operator platziert sie in einem Array. Auch wenn es Null oder ein Objekt gibt.

Die Syntax des Array-Operators lautet wie folgt:

Mit dem Array-Operator können Sie ein Array mit Null oder einem Objekt erstellen., Beispiel:

Der Array-Operator ist in Skripten nützlich, wenn Sie Objekte erhalten, weiß aber nicht, wie viele Objekte Sie erhalten. Beispiel:

Weitere Informationen zum Array-Unterausdruckoperator finden Sie unterabout_operators.

Zugriff auf und Verwendung von Array-Elementen

Lesen eines Arrays

Sie können mit seinem Variablennamen auf ein Array verweisen. Um alle Elemente im Array anzuzeigen, geben Sie den Array-Namen ein., Angenommen, $a ist ein Array mit Ganzzahlen 0, 1, 2 bis 9; Geben Sie Folgendes ein:

Sie können mit einem Index, beginnend bei Position 0, auf die Elemente in einem Array verweisen. Fügen Sie die Indexnummer in Klammern ein., Um beispielsweise das erste Element im Array $a anzuzeigen, geben Sie Folgendes ein:

Um das dritte Element im Array $a anzuzeigen, geben Sie Folgendes ein:

Sie können einen Teil des Arrays mit einem Bereichsoperator für den Index abrufen. Forexample, zum abrufen der zweite, fünfte Elemente des Arrays, Sie wouldtype:

Negative zahlen zählen vom Ende des Arrays., Zum Beispiel bezieht sich “ -1 “ aufdas letzte Element des Arrays. Um die letzten drei Elemente des Arrays in indexaufsteigender Reihenfolge anzuzeigen, geben Sie Folgendes ein:

Wenn Sie negative Indizes in absteigender Reihenfolge eingeben, ändert sich Ihre Ausgabe.

Seien Sie jedoch vorsichtig, wenn Sie diese Notation verwenden. Die Notation wechselt von der ersten Grenze zum Anfang des Arrays.,

Sie können den Plus-Operator (+) verwenden, um einen Bereich mit einer Liste von Elementenin einem Array zu kombinieren. Um beispielsweise die Elemente an den Indexpositionen 0, 2 und4 bis 6 anzuzeigen, geben Sie Folgendes ein:

Um mehrere Bereiche und einzelne Elemente aufzulisten, können Sie den plusoperator verwenden., Um beispielsweise Elemente von null bis zwei, vier bis sechs und theelement am achten Positionstyp aufzulisten:

Iterationen über Array-Elemente

Sie können auch Schleifenkonstrukte wie ForEach, For und While Schleifen verwenden, um die Elemente in einem Array zu verbinden. Um beispielsweise eine ForEach-Schleife zu verwendendisplay die Elemente im Array $a, geben Sie Folgendes ein:

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

Die For-Schleife ist nützlich, wenn Sie Zähler erhöhen, während Sie die Elemente in einem Array untersuchen. Um beispielsweise eine For-Schleife zu verwenden, um jeden othervalue in einem Array zurückzugeben, geben Sie Folgendes ein:

Sie können eine While-Schleife verwenden, um die Elemente in einem Array anzuzeigen, bis eine definedcondition nicht mehr wahr ist., Um beispielsweise die Elemente im Array $aanzuzeigen, während der Array-Index kleiner als 4 ist, geben Sie Folgendes ein:

Eigenschaften von Arrays

Count or Length oder LongLength

Um zu bestimmen, wie viele Elemente sich in einem Array befinden, verwenden Sie die Length Eigenschaft oder seineCount Alias. Longlength ist nützlich,wenn das Array mehr als2,147,483, 647 Elemente enthält.

Rang

Gibt die Anzahl der Dimensionen im array., Die meisten Arrays in PowerShell habeneine Dimension, nur. Selbst wenn Sie denken, dass Sie ein mehrdimensionales Array erstellen. wie das folgende Beispiel:

Das folgende Beispiel zeigt, wie Sie mit.Net Framework ein wirklich mehrdimensionales Array erstellen.

Methoden von Arrays

Clear

Setzt alle Elementwerte auf den Standardwert des Elementtyps des Arrays.Die Clear () – Methode setzt die Größe des Arrays nicht zurück.,

Im folgenden Beispiel ist $a ein Array von Objekten.

In diesem Beispiel wird $intA explizit so eingegeben, dass es Ganzzahlen enthält.

ForEach

Ermöglicht die Iteration aller Elemente im Array und die Ausführung einer bestimmten Operationfür jedes Element des Arrays.

Die ForEach-Methode weist mehrere Überlastungen auf, die unterschiedliche Vorgänge ausführen.,

ForEach(Scriptblock-Ausdruck)

ForEach (Scriptblock-Ausdruck, Objektargumente)

Diese Methode wurde in PowerShell v4 hinzugefügt.

Hinweis

Die Syntax erfordert die Verwendung eines Skriptblocks. Klammern sind optional, wennDer Scriptblock ist der einzige Parameter. Außerdem darf kein Abstand zwischen der Methode und der öffnenden Klammer oder Klammer vorhanden sein.

Das folgende Beispiel zeigt die Verwendung der foreach-Methode. In diesem Fall ist dieintent, den quadratischen Wert der Elemente im Array zu generieren.,

Genau wie der -ArgumentList Parameter von ForEach-Object ermöglicht der Parameter argumentsdie Übergabe eines Arrays von Argumenten an einen Skriptblock, der so konfiguriert ist, dass er sie akzeptiert.

Weitere Informationen zum Verhalten von ArgumentList finden Sie unterabout_splatting.,

ForEach (type convertToType)

Mit der ForEach – Methode können die Elemente schnell in einen anderen Typ umgewandelt werden; Das folgende Beispiel zeigt, wie eine Liste von Zeichenfolgendaten in – Typ konvertiert wird.

ForEach(string propertyName)

ForEach(string propertyName, object newValue)

ForEach Methode kann auch verwendet werden, um schnell abrufen oder festlegen propertyvalues für jedes Element in der Sammlung.,

ForEach(string methodName)

ForEach(string methodName, object arguments)

Schließlich ForEach Methoden können verwendet werden, um die Ausführung einer Methode auf jedes Element in der Sammlung.

Genau wie die -ArgumentList parameter von ForEach-Object, die argumentsParameter ermöglicht die Übergabe eines Arrays von Argumenten an ein Skript blockkonfiguriert, um sie zu akzeptieren.

Hinweis

Ab Windows PowerShell 3.,0 abrufen von Eigenschaften und executingmethods für jedes Element in einer Sammlung kann auch mit „Methodsof skalare Objekte und Sammlungen“ Sie können mehr darüber lesen hereabout_methods.

Wobei

Erlaubt, die Elemente des Arrays zu filtern oder auszuwählen. Das Skript muss auswertenzu etwas anderem als: null (0), leere Zeichenfolge, $false oder $null für das Element, das nach der Where

angezeigt werden soll, gibt es eine Definition für die Where – Methode.,

Hinweis

Die Syntax erfordert die Verwendung eines Skriptblocks. Klammern sind optional, wennDer Scriptblock ist der einzige Parameter. Außerdem darf kein Abstand zwischen der Methode und der öffnenden Klammer oder Klammer vorhanden sein.

Die Expression ist scriptblock, die für die Filterung erforderlich ist, die modeoptional argument ermöglicht zusätzliche Auswahlmöglichkeiten, und dienumberToReturn optional argument ermöglicht die Möglichkeit zu begrenzen, wie viele itemsare aus dem Filter zurückgegeben.,p>Die akzeptablen Werte für mode sind:

  • Default (0) – Alle Elemente zurückgeben
  • First (1) – Das erste Element zurückgeben
  • Last (2) – Das letzte Element zurückgeben
  • SkipUntil (3) – Elemente überspringen, bis die Bedingung wahr ist, die verbleibenden Elemente zurückgeben
  • Until (4) – Alle Elemente zurückgeben, bis die Bedingung wahr ist
  • Split (5) – Gibt ein Array von zwei Elementen zurück
    • Das erste Element enthält übereinstimmende Elemente
    • Das zweite Element enthält die verbleibenden Elemente

Das folgende Beispiel zeigt, wie alle ungeraden Zahlen aus dem Array ausgewählt werden.,

Dieses Beispiel zeigt, wie die Zeichenfolgen ausgewählt werden, die nicht leer sind.

Default

Die Default Modus filtert Elemente mit der Expression scriptblock.

Wenn eine numberToReturn angegeben wird, gibt sie die maximale Anzahl der zurückzugebenden Elemente an.,

Hinweis

Sowohl die Default modus und First modus rückkehr die erste(numberToReturn) artikel, und kann austauschbar verwendet werden.

Last

SkipUntil

Der SkipUntil – Modus überspringt alle Objekte in einer Sammlung, bis ein Objekt den Skriptblock-Ausdrucksfilter passiert. Es gibt dann ALLE verbleibenden Collectionitems zurück, ohne sie zu testen. Es wird nur ein bestandener Artikel getestet.

Dies bedeutet, dass die zurückgegebene Sammlung sowohl übergebende als auch nicht übergebende Elemente enthält, die NICHT getestet wurden.,

Die Anzahl der zurückgegebenen Elemente kann begrenzt werden, indem ein Wert an das ArgumentnumberToReturn übergeben wird.

Bis

Die Until modus invertiert die SkipUntil modus. Es gibt ALLE Elemente in acollection zurück, bis ein Element den Skriptblockausdruck übergibt. Sobald ein itempasses der scriptblock Ausdruck, die Where Methode stoppt die Verarbeitung von Elementen.

Dies bedeutet, dass Sie den ersten Satz nicht übergebener Elemente von derWhere-Methode erhalten., Nachdem ein Artikel übergeben wurde, wird der Rest NICHT getestet oder zurückgegeben.

Die Anzahl der zurückgegebenen Elemente kann begrenzt werden, indem ein Wert an das ArgumentnumberToReturn übergeben wird.

Hinweis

Sowohl Until als auch SkipUntil arbeiten unter der Prämisse, KEINE Batchof-Elemente zu testen.

Until gibt die Elemente VOR dem ersten Durchlauf.

SkipUntil gibt alle Elemente NACH dem ersten Durchlauf zurück, einschließlich des ersten übergebenden Elements.,

Split

DerSplit – Modus teilt oder gruppiert Sammlungselemente in zwei separate Sammlungen. Diejenigen, die den Scriptblock-Ausdruck übergeben, und diejenigen, die dies nicht tun.

Wenn eine numberToReturn angegeben ist, enthält die erste Sammlung diepassing-Elemente, um den angegebenen Wert nicht zu überschreiten.

Die verbleibenden Objekte, selbst diejenigen, die den Ausdrucksfilter übergeben, werden in der zweiten Sammlung umgeworfen.,

Rufen Sie die Elemente eines Arrays ab

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

Wenn Sie ein Array an Get-Member, sendet PowerShell die Elemente einzeln und Get-Member gibt den Typ jedes Elements im Array zurück (ignoringduplicates).

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

Der folgende Befehl ruft beispielsweise die Mitglieder der $a arrayvariable ab.

Sie können die Elemente eines Arrays auch abrufen, indem Sie ein Komma (,) vor dem Wert eingeben, der an das Cmdlet Get-Member weitergeleitet wird. Das Komma macht das Array thesecond Element in einem Array von Arrays. PowerShell leitet die Arrays einzeln weiter und Get-Member gibt die Mitglieder des Arrays zurück. Wie die nächsten zwei Beispiele.,

Bearbeiten eines Arrays

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

Um den Wert eines bestimmten Elements in einem Array zu ändern, geben Sie den Arrayname und den Index des Elements an, das Sie ändern möchten, und verwenden Sie dann Diezuweisungsoperator (=), um einen neuen Wert für das Element anzugeben., Um beispielsweise den Wert des zweiten Elements im Array $a (Indexposition 1) in 10 zu ändern,geben Sie Folgendes ein:

Sie können auch die setValue-Methode eines Arrays verwenden, um einen Wert zu ändern. Das folgende Beispiel ändert den zweiten Wert (Indexposition 1) des $a arraytools:

Sie können den Operator += verwenden, um ein Element zu einem Array hinzuzufügen. Das nachfolgende Beispiel zeigt, wie ein Element zum Array $a hinzugefügt wird.,

Hinweis

Wenn Sie den Operator += verwenden, erstellt PowerShell tatsächlich ein neues Arraymit den Werten des ursprünglichen Arrays und dem Mehrwert. Dies könnte zu Leistungsproblemen führen, wenn die Operation mehrmals wiederholt wird oderDie Größe des Arrays ist zu groß.

Es ist nicht einfach, Elemente aus einem Array zu löschen, aber Sie können ein newarray erstellen, das nur ausgewählte Elemente eines vorhandenen Arrays enthält., Um beispielsweise das Array mit allen Elementen im Array $a mit Ausnahme des Arrays an Indexposition 2 zu erstellen, geben Sie Folgendes ein:

Um zwei Arrays zu einem einzigen Array zu kombinieren, verwenden Sie den Plusoperator (+). Thefollowing Beispiel erstellt zwei arrays, verbindet Sie, und dann zeigt theresulting array kombiniert.

Als Ergebnis enthält das Array $z 1, 3, 5 und 9.,

Um ein Array zu löschen, weisen Sie dem Array den Wert $null zu. Der followingcommand löscht das Array in der Variablen $a.

$a = $null

Sie können auch das Cmdlet verwenden, aber einen Wert von $null isfaster zuweisen, insbesondere für große Arrays.

Arrays von Null oder Eins

Ab Windows PowerShell 3.0 hat eine Sammlung von Null oder einem Objektdie Eigenschaft Count und Length. Sie können auch in ein Array von oneobject indizieren., Mit dieser Funktion können Sie Skriptfehler vermeiden, die auftreten, wenn ein Befehl, der eine Sammlung erwartet, weniger als zwei Elemente erhält.

Die folgenden Beispiele zeigen diese Funktion.

Null objekte

Ein objekt

Indizierung unterstützung für System.Tupelobjekte

PowerShell 6.1 hat die Unterstützung für den indizierten Zugriff von Tupelobjekten hinzugefügt, ähnlich wie Arrays.,Beispiel:

Im Gegensatz zu Arrays und anderen Sammlungsobjekten werden Tupelobjekte als Asingle-Objekt behandelt, wenn sie durch die Pipeline oder durch Parameter übergeben werden, die Unterstützungarrays von Objekten.

Weitere Informationen finden Sie unter System.Tupeln.

Siehe auch

  • about_Assignment_Operators
  • about_Hash_Tables
  • about_Operators
  • about_For
  • about_Foreach
  • about_While


Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.