Articles

PowerShell Array Guide: Verwendung und Erstellung von

Arrays sind ein grundlegendes Merkmal von PowerShell. Arrays ermöglichen es, echte Datenstrukturen (und nicht nur rohe Zeichenfolgen) aufzunehmen, zu manipulieren und auszugeben. Diese Funktion macht PowerShell anders und nützlicher als andere Skriptsprachen.

In diesem Artikel erklären wir, was Arrays sind und wie sie in PowerShell verwendet werden. Wir zeigen Ihnen zunächst, wie Sie Arrays in PowerShell erstellen und dann grundlegende Funktionen zum Bearbeiten verwenden., Dann werden wir uns verschiedene Arten von Arrays ansehen und einige der subtileren Merkmale untersuchen.

Holen Sie sich den kostenlosen PowerShell-und Active Directory Essentials-Videokurs

Ich würde dies sowohl für neue als auch für fortgeschrittene PowerShell-Benutzer empfehlen. Das Erstellen eines Anzeigenwerkzeugs ist eine großartige Lernerfahrung.

Unser Ziel ist es, Ihnen eine gute Erdung bei der Arbeit mit Arrays in PowerShell zu geben. Sobald Sie diese Grundlagen beherrschen, können Sie einen Blick auf unseren Kurs auf PowerShell werfen, um mehr zu erfahren.,

  • Array-Grundlagen
  • Arrays von Objekten
  • Operatoren für Arrays
  • Hinzufügen von Werten zu einem Array
  • Array-Typen
  • Erweiterte Array-Funktionen

PowerShell-Arrays

Arrays sind ein gemeinsames Merkmal fast aller Programmiersprachen. Sie sind eine Datenstruktur, die als Sammlung mehrerer Daten dient. Wenn Sie mit einem Array arbeiten, können Sie entweder denselben Befehl verwenden, um für jedes Element innerhalb eines Arrays dieselbe Funktion auszuführen, oder über einen Index auf einzelne Elemente zugreifen und diese bearbeiten.,

Arrays in PowerShell können ein oder mehrere Elemente enthalten. Ein Element kann eine Zeichenfolge, eine Ganzzahl, ein Objekt oder sogar ein anderes Array sein, und ein Array kann eine beliebige Kombination dieser Elemente enthalten. Jedes dieser Elemente hat einen Index, der immer (manchmal verwirrend) bei 0 beginnt. Das erste Element in einem Array erhält also den Index 0, das zweite wird als 1 indiziert und so weiter.,

PowerShell-Arrays sind ein so grundlegender Bestandteil von PowerShell, dass sie in jedem PowerShell-Tutorial enthalten sind, und gute Kenntnisse der Arbeit mit ihnen sind für viele Aspekte der Verwendung von PowerShell von entscheidender Bedeutung, von der Konfiguration von Office 365 bis zur Verwendung von PowerShell für Pentesting.

Ein Beispiel für ein PowerShell-Array

Der einfachste Weg, um zu veranschaulichen, was ein Array ist, um ein Beispiel zu nehmen. Lassen Sie uns ein Array erstellen, das eine Obstschale darstellt.,

Es gibt mehrere Möglichkeiten, Arrays in Powershell zu erstellen, aber am einfachsten ist es, diesen Befehl auszuführen:

@()

Dadurch wird ein leeres Array erstellt. Ein leeres Array ist jedoch nicht so nützlich, also fügen wir unserem neuen Array einige Früchte hinzu. Diese werden als Textzeichenfolgen dargestellt. Führen Sie dazu diesen Befehl aus

$fruit = @('Apples','Oranges','Bananas')

Dies nennt ein Array „fruit“ und fügt drei Elemente hinzu., Um zu sehen, dass dies funktioniert hat, können Sie das Array mit diesem Befehl lesen:

PS /Users/yourname> $fruit

Was jetzt zurückgibt:

 Apples Oranges Bananas

Wie Sie sehen, ist dieses Array eine Gruppe einzelner Daten. PowerShell indiziert sie automatisch so, wie wir es oben erklärt haben: „Apple“ wird als 0, „Orangen“ als 1 und „Bananen“ als 2 indiziert.

Dieses Beispiel könnte den Anschein erwecken, dass Arrays recht einfache Objekte sind und in gewisser Weise auch sind. Ihre Einfachheit macht sie jedoch auch zu so flexiblen, kraftvollen Objekten., Im Rest dieses Handbuchs geben wir Ihnen einen Vorgeschmack darauf, was Sie mit Arrays tun können.

Array-Grundlagen

In diesem Abschnitt betrachten wir die grundlegendsten Möglichkeiten zum Erstellen und Arbeiten mit Arrays in PowerShell.

Erstellen Sie ein Array

Zuerst erstellen wir ein Array. Die Standardmethode hierfür ist die Verwendung von @ (), obwohl es andere Möglichkeiten gibt.

Erstellen wir vorerst ein Array namens „data“. Führen Sie dazu Folgendes aus:

$data = @()

Dieses Array ist derzeit leer, da wir keine Daten dafür angegeben haben., Um zu überprüfen, wie viele Elemente sich in einem Array befinden, können wir die Zählfunktion verwenden:

$data.count

Die im Moment eine 0 zurückgibt, da sich in unserem Array keine Elemente befinden. Um ein Array mit einigen Daten zu erstellen, fügen wir diese Daten in die Klammern nach dem@:

$data = @('Zero','One','Two','Three')

Führen Sie jetzt dieselbe Zählfunktion aus, und Sie werden sehen, dass sich in diesem Array 4 Elemente befinden. Um diese Elemente erneut anzuzeigen, rufen wir einfach das Array auf:

$data

Das die Elemente auflistet, die wir in das Array eingefügt haben.,

Zugriff auf Elemente

Jetzt haben wir ein Array, von dem aus wir auf Elemente zugreifen möchten. Es gibt mehrere Möglichkeiten, dies zu tun. Die erste besteht darin, den Index der Elemente im Array zu verwenden. Wie bereits erwähnt, beginnen Indizes bei 0, sodass wir PowerShell anweisen müssen, sich das Element anzusehen, dessen Index Null ist, um das erste Element in unserem Array abzurufen. Wir tun dies, indem wir Folgendes ausführen:

$data

Dies gibt „Null“ zurück, da dies die erste Zeichenfolge war, die wir in unser Array eingefügt haben.,

Wir können diese Syntax auch erweitern, um mehrere Elemente aus demselben Array zurückzugeben, indem wir einfach mehr Indizes in denselben Befehl einfügen. Führen Sie beispielsweise aus:

$data

Dies gibt“Null Zwei Drei“ zurück. Die Elemente werden in derselben Reihenfolge zurückgegeben, in der Sie die Indizes eingegeben haben. Sie können auch eine weitere Syntax verwenden, um Sätze von Elementen aus einem Array zurückzugeben. Zum Beispiel:

$data

gibt alle Elemente mit einem index zwischen 1 und 3 (inklusive)., Und:

$data

Gibt das letzte Element im Array zurück: Die negative Zahl weist PowerShell an, vom Ende des Arrays rückwärts zu zählen In diesem Fall gibt dieser Befehl“ Drei “ zurück, das letzte Element in unserem Testarray.

Elemente ändern

Mit derselben Methode können die Elemente in einem Array aktualisiert werden. Um beispielsweise das Element zu aktualisieren, dessen Index 2 ist (denken Sie daran, dass dies das dritte Element im Array ist), können wir Folgendes ausführen:

$data = 'second'

Dies gibt uns direkten Zugriff auf die Elemente in einem Array.,

Iterierte Aktionen

Eine der leistungsstärksten Funktionen von PowerShell (und tatsächlich jeder Befehlszeilenschnittstelle) ist die Möglichkeit, für alle Elemente in einem Array dieselbe Aktion auszuführen. Es gibt verschiedene Möglichkeiten, dies zu tun.

Am einfachsten ist es, eine Pipeline zu verwenden, bei der es sich um das Zeichen |handelt. Wenn Sie ein Array an eine Pipeline übergeben, wird jedes Element in einem Array einzeln verarbeitet. Wie wir in unserem Artikel über PowerShell-Objekte und Datenleitungen darauf hingewiesen haben, ist dies häufig der einfachste Weg, um iterierte Aktionen auszuführen.,

Um beispielsweise jedem Element in unserem Array eine Beschreibung hinzuzufügen, können wir diesen Befehl verwenden:

$data | ForEach-Object {"Item: "}

Dieser Befehl weist PowerShell an, die Elemente in $data einzeln zu übernehmen und dann für jeden von ihnen „Item:“ am Anfang hinzuzufügen, gefolgt vom ursprünglichen Wert.

Es gibt mehrere andere Möglichkeiten, iterierte Aktionen in PowerShell auszuführen, von denen viele vertraut sind, wenn Sie andere Programmiersprachen verwendet haben: PowerShell enthält ForEach-Schleifen, For-Schleifen und Switch-Schleifen. Weitere Informationen dazu finden Sie in der Microsoft-Dokumentation.,

Arrays von Objekten

Bisher haben wir mit einem Array gearbeitet, das grundlegende Daten enthält: eine Zeichenfolge. Arrays können jedoch auch Objekte enthalten, und viele der häufigsten Anwendungen von PowerShell – wie das Konfigurieren von Office 365 – erfordern, dass Sie wissen, wie Sie mit Objekten arbeiten. Schauen wir uns also einige grundlegende Befehle dafür an.

Erstellen eines Arrays von Objekten

Wir können ein Array von Objekten auf die gleiche Weise erstellen wie mit Strings, mit der Funktion @ ()., Um beispielsweise eine Testliste von Mitarbeitern zu erstellen, können wir Folgendes verwenden:

Die meisten Cmdlets geben ein Array dieses Typs zurück, wenn Sie ihnen eine Variable zuweisen, mit der Sie arbeiten können.

Zugriff auf Objekte aus Arrays

Der Prozess, den wir oben durchlaufen haben, um auf einzelne Daten zuzugreifen, kann gleichermaßen mit Arrays verwendet werden, die Objekte enthalten., Wenn Sie beispielsweise Folgendes ausführen:

$data

, wird Folgendes zurückgegeben:

 FirstName LastName ----- ---- Kevin Marquette

Alternativ können wir auf die Eigenschaften einzelner Objekte zugreifen, indem wir angeben, welche Eigenschaft wir innerhalb desselben Befehls möchten:

$data.FirstName

Was“Kevin“ zurückgibt.

Aktualisieren von Objekteigenschaften in Arrays

Wenn wir weiter gehen, bietet uns dieselbe Syntax die Möglichkeit, einzelne Eigenschaften innerhalb von Objekten zu aktualisieren, die in Arrays gespeichert sind., Zum Beispiel:

$data.FirstName = 'Jay'

Aktualisiert die FirstName Eigenschaft im ersten Element in unserem Array auf „Jay“.

Zugriff auf jede Eigenschaft in einem Array von Objekten

In den meisten Programmiersprachen müssten wir einen iterativen Prozess (siehe oben) verwenden, um auf alle Eigenschaften in einem Array von Objekten zuzugreifen. Wir können das natürlich auch in PowerShell tun, indem wir Folgendes ausführen:

Dies gibt eine Liste aller LastName-Eigenschaften in unserem Array zurück, aber es ist rechenintensiv und schwierig zu schreiben, jedes Mal, wenn Sie diese Daten sehen möchten., Stattdessen hat PowerShell eine Verknüpfung. Führen Sie Folgendes aus:

$data.LastName

Und Sie sehen dieselbe Liste. PowerShell nimmt tatsächlich jedes Objekt nacheinander, genau wie zuvor, aber es verbirgt diese Komplexität vor uns.

Operatoren für Arrays

Fast alle Operatoren, die wir für einzelne Datenelemente in PowerShell verwenden, funktionieren auch mit Arrays, aber einige von ihnen funktionieren etwas anders, wenn sie auf diese Weise verwendet werden. Schauen wir uns also die gängigsten Operatoren an und wie Sie sie in Arrays verwenden können.,

– join

Der Operator-join ist einer der am häufigsten verwendeten Befehle in PowerShell und äußerst nützlich bei der Arbeit mit Arrays. Es kann iterativ für die Elemente in einem Array verwendet werden, um sie in der Ausgabe eines Arrays miteinander zu verbinden.

nehmen wir ein Beispiel. Erstellen Sie zunächst ein einfaches Array:

$data = @(1,2,3,4)

Und fügen Sie dann mit-join einen Bindestrich zwischen jedes Element ein und geben Sie das Ergebnis aus:

$data -join '-'

Was“1-2-3-4″ zurückgibt., Der Operator-join kann auch ohne Trennzeichen verwendet werden, in dem können die Elemente in einem Array als eine Reihe von nicht getrennten Werten ausgegeben werden.

– contains

Der Operator-contains arbeitet auf Arrays sehr ähnlich wie bei der Verwendung mit einzelnen Datenpunkten. Sie können damit überprüfen, ob ein Array eine bestimmte Zeichenfolge enthält, und es wird ein boolescher Wert ausgegeben. Zum Beispiel:

 PS> $data = @('red','green','blue') PS> $data -contains 'green' True

Equalities

In PowerShell gibt es zwei Operatoren zur Überprüfung der Gleichheit: -eq und-ne., Wenn Sie es gewohnt sind, diese für einzelne Werte zu verwenden, kann die Art und Weise, wie diese in Bezug auf Arrays funktionieren, etwas seltsam erscheinen. Wenn Sie beispielsweise-eq, gibt der Operator kein boolesches „True“ aus, sondern gibt das übereinstimmende Objekt zurück.

Zum Beispiel:

 PS> $data = @('red','green','blue') PS> $data -eq 'green' green

Der Operator-ne funktioniert ähnlich, außer dass er Ihnen alle Werte gibt, die nicht Ihrem angegebenen Wert entsprechen., Also:

 PS> $data = @('red','green','blue') PS> $data -ne 'green' red blue

Sie können jedoch eine if() Anweisung verwenden, um die Ausgabe dieser Operatoren mit Ihrer erwarteten Ausgabe zu vergleichen und eine“ True „- oder“ False “ – Ausgabe zurückzugeben.

Hinzufügen von Werten zu einem Array

Nach all den obigen Anweisungen fragen Sie sich wahrscheinlich, warum wir das Hinzufügen von Datenelementen zu einem Array weggelassen haben. Das ist, weil es keine Möglichkeit gibt, das zu tun. Ein Array bleibt nach dem Erstellen für immer gleich groß, und um es größer zu machen, müssen Sie es in ein neues Array kopieren und das Original löschen.,

Das klingt kompliziert, aber Powershell erledigt diesen Prozess für Sie mit einer Reihe ziemlich einfacher Operatoren. Es gibt zwei Möglichkeiten, dies zu tun.

Array Addition

PowerShell kann mit dem Operator „+“ zwei Arrays zusammenfügen, wodurch die Komplexität dessen, was das System tatsächlich tut, ausgeblendet wird. Wenn Sie beispielsweise zwei Testarrays wie folgt erstellen:

 $first = @( 'Zero' 'One' ) $second = @( 'Two' 'Three' )

Sie können sie dann einfach hinzufügen:

 PS> $first + $second

Dadurch wird ein neues Array mit allen vier Werten erstellt und die Ergebnisse ausgegeben., Beachten Sie jedoch, dass dieses neue Array keinen neuen Namen erhält. Dazu verwenden wir den Operator+=.

Plus Equals zum Kombinieren von Arrays

Anstelle des Operators „+“ im obigen Beispiel hätten wir den Operator „+=“ verwenden können, der uns ein ganz neues Array gibt:

 $first += 'Two, Three'

Der Befehl sieht einfach aus, verbirgt jedoch, was PowerShell hier tatsächlich tut. Es kopiert alle Werte von $first und erstellt ein neues Array, das die zusätzlichen Werte enthält. Es löscht dann das ursprüngliche Array.,

Dies ist etwas problematisch, da es rechnerisch teuer ist. Bei kleinen Arrays bemerken Sie vielleicht nicht, aber bei großen Datenmengen kann diese Methode Ihr System schnell sperren. Deshalb haben wir Ihnen unten einen Weg gegeben, dieses Problem zu umgehen.

Array-Typen

Bisher haben wir es mit Standard-Arrays in PowerShell zu tun. Obwohl PowerShell es uns damals nicht gesagt hat, ist jedes Array, das wir bisher erstellt haben, von einem Typ, dem Typ]. Dieser Array-Typ kann jeden Datentyp enthalten.,

Stark typisierte Arrays

Es gibt jedoch Zeiten, in denen Sie die Datentypen oder Objekte, die ein Array enthalten kann, auf nur einen beschränken möchten. Wir können dies tun, indem wir ein stark typisiertes Array verwenden, das nur den angegebenen Datentyp enthalten kann.

Um beispielsweise ein Array zu erstellen, das nur Ganzzahlen annehmen kann, können wir Folgendes verwenden:

 PS> ] $numbers = 1,2,3

Wenn Sie versuchen, den falschen Datentyp in ein stark typisiertes Array einzufügen, wird ein Fehlercode zurückgegeben.

ArrayList

Wie oben erwähnt, kann das Hinzufügen von Elementen zu Arrays ein Problem sein., Es gibt jedoch eine andere Art von Sammlung – ArrayList -, die dies eleganter handhabt. Um diese Art von Sammlung zu verwenden, müssen wir jedoch das.Net Framework aufrufen, was einige unglückliche Ausgaben in unseren Weg werfen kann.

Um eine ArrayList zu erstellen und dann Elemente hinzuzufügen, führen Sie Folgendes aus:

 $myarray = ::new() $myArray.Add('Value')

Hier können wir den standardmäßigen.Net-Konstruktor verwenden, um eine neue ArrayList zu erstellen, und dann mit dem Operator-Add Elemente hinzufügen. Der Operator ist da, weil diese Befehle manchmal seltsame Ausgaben auslösen, die den Code durcheinander bringen können.,

Weiter gehen

Dies sind die häufigsten Array-Typen in PowerShell, aber es gibt noch einige andere. Wenn Sie als PowerShell-Benutzer entwickeln, ist es nützlich, ArrayLists anstelle von geraden Arrays zu verwenden, aber Sie sollten auch wissen, dass dieser Array-Typ nicht von fortgeschrittenen Benutzern verwendet wird.

Stattdessen verwenden die meisten erfahrenen Programmierer einen generischen Listentyp namens List. Diese Art von Liste ist etwas komplexer zu verwenden, da sie direkt von C# abgeleitet ist, aber sobald Sie sie gemeistert haben, bietet sie weit mehr Flexibilität als die Arrays, die wir bisher besprochen haben.,

Erweiterte Array-Funktionen

Zusätzlich zu den grundlegenden Funktionen, die wir bisher behandelt haben, gibt es auch eine Reihe fortgeschrittener Array-Funktionen und einige zusätzliche Funktionen, die Sie beachten sollten, wenn Sie sie häufiger verwenden.

Arrays in Vorgröße

Die obige Standardmethode zum Erstellen von Arrays erstellt ein Array mit einer Größe, die durch die Anzahl der darin enthaltenen Elemente bestimmt wird. Sie können jedoch ein Array einer bestimmten Größe mithilfe des Konstruktors new($size) erstellen.

Das kannst du so machen:

 $data = ]::new(4)

Wenn du einen ausführst .,count query für dieses Array gibt „4“ zurück, da es, obwohl es keine Daten enthält, den Raum mit 0 füllt. Dies ist tatsächlich äußerst nützlich, wenn Sie ein neues Array initialisieren müssen, das mit Nullen gefüllt ist, da ein Array in Vorgröße anfänglich mit 0 gefüllt wird.

Arrays multiplizieren

Das Multiplizieren der Objekte in einem Array – und insbesondere von Strings – verwirrt die meisten Menschen, wenn sie dies zum ersten Mal tun müssen., Wir haben extrem komplizierte if () – Skripte gesehen, um dieses Ergebnis zu erzielen, aber es gibt einen viel einfacheren Weg:

 PS> $data = @('red','green','blue') PS> $data * 3

Ja, das stimmt. Dadurch wird ein neues Array erstellt, wobei jeder Wert dreimal wiederholt wird. Sie können diesen Befehl auch alternativ verwenden, um ein Array mit Nullen (oder einem anderen Standardwert) zu füllen, indem Sie ein Array mit dem von Ihnen ausgewählten Wert erstellen und es dann so oft multiplizieren, wie Sie möchten.

Verschachtelte Arrays

Wie viele andere Programmiersprachen unterstützt PowerShell verschachtelte Arrays., Die Standardmethode in PowerShell besteht darin, ein mehrdimensionales Array zu verwenden. Das einfachste Beispiel hierfür ist das Erstellen eines zweidimensionalen Arrays:

Die Datenstruktur, die Sie mit diesem Befehl erstellen, ist eine klassische Matrix und kann wie in anderen Programmiersprachen verwendet werden. Um beispielsweise von diesem Array aus auf einen bestimmten Wert zuzugreifen, müssen Sie zwei Dimensionen angeben.,

Um beispielsweise auf den Wert „3“ zuzugreifen, verwenden wir Folgendes:

 PS> $outside = 0 PS> $inside = 2 PS> $data 3

Dieser Befehl kann dann verwendet werden, um auf einen beliebigen Wert zuzugreifen, Sie müssen jedoch verschachtelte Klammern hinzufügen, um in jede Ebene der Matrix zu gelangen.

Ein letztes Wort

Alle obigen Anweisungen sind möglicherweise eine Menge für Benutzer, die zuerst zu PowerShell kommen, aber sie wurden sorgfältig ausgewählt, um die Sprache zu lernen. Durch die Kombination der verschiedenen Techniken können Sie leistungsstarke Skripte erstellen, um viele der häufigsten und zeitaufwendigsten Arbeiten mit PowerShell zu automatisieren.,

Diese Fähigkeiten helfen Ihnen auch, über PowerShell hinauszugehen. Viele der am häufigsten verwendeten Sprachen für die Verwaltung der Cybersicherheit, wie NetCat und Nmap, verwenden viele der gleichen Prinzipien wie PowerShell. Daher ist die Verwendung von PowerShell zur Verbesserung Ihrer Cybersicherheit eine großartige Möglichkeit, um zu lernen, wie Sie Ihre Systeme allgemeiner schützen können.