Über Arrays
- 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 $A
zu 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 $a
anzuzeigen, 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 arguments
die Ü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 arguments
Parameter 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 mode
optional 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