PowerShell-Variablen und Arrays
Im vorherigen Artikel mit dem Namen PowerShell Scripting Tutorial for Beginners haben wir untersucht, wie man mit der PowerShell-Konsole Skripte ausführt, und gelernt, was Cmdlets sind, wie man ihre Eigenschaften erhält und wie man Pipes verwendet, um Daten von einem Cmdlet an ein anderes zu übergeben.
In diesem Artikel werden wir zu Variablen und Arrays übergehen, einschließlich dessen, was sie sind und wie wir sie erstellen, entfernen und ändern können.,i>Variablen auflisten
- Array-Liste
- Array-Index
- Mehrdimensionale Arrays
- Array sortieren
- Add to array
- Array length
- Remove item from array
- Array contains
- Clear array
- Print array
- Loop through an array
PowerShell Variables
A variable is a unit of memory in which values are stored., Eine Variable in PowerShell beginnt mit “ $ “ (Dollarzeichen) und ihr Name kann beliebige Buchstaben, Zahlen und Unterstriche enthalten. Um einer Variablen einen Wert zuzuweisen, verwenden wir den Operator“=“. Um den Wert einer Variablen anzuzeigen, geben Sie einfach die Variable ein.,
Wenn Sie einer Zeichenfolge eine Nummer hinzufügen, wird die Nummer automatisch zu einer Zeichenfolge:
$var1 = "Netwrix"$var2 = 2018$var3 = $var1 + $var2$var3
Variablentypen
Der PowerShell-Variablentyp wird automatisch basierend auf dem Wert festgelegt, den Sie ihm zuweisen, aber Sie können den Typ auch manuell zuweisen:
Um herauszufinden, welcher Typ eine Variable ist, verwenden wir den Parameter „GetType ()“:
$var1 = "Netwrix"$var1.GetType().FullName
Wie wir sehen können, var1 Variable hat das „System.,String“ – Typ.
Hier sind Beschreibungen aller PowerShell-Variablentypen:
Sie haben wahrscheinlich bereits verstanden, dass Sie nicht nur einen bestimmten Wert in die Variable schreiben und das Klassensystem bemerken können.Objekt in der Tabelle. In diese Variable können Sie die Ausgabe eines beliebigen Cmdlets schreiben.
Variablenbereich
Der Variablenbereich in PowerShell kann entweder lokal oder global sein. Standardmäßig hat eine Variable einen lokalen Bereich., Eine Variable wird durch ihren aktuellen Bereich begrenzt; Beispielsweise kann eine lokale Variable in einer aktuellen Funktion oder einem aktuellen Skript verfügbar sein, während eine globale Variable während der aktuellen PowerShell-Sitzung aktiv ist. Um eine globale Variable zu bezeichnen, verwenden Sie das Format $Global: variable = value, wie im folgenden Befehl dargestellt:
$Global:var4 = 12
Beispiele für PowerShell-Variablen
Variablen auflisten
Führen Sie den Befehl ls variable:* aus, um alle aktuell verfügbaren Variablen aufzulisten., Hier ist ein Beispiel für die Ausgabe:
Variable setzen
Sie können eine Variable erstellen, indem Sie ihr einfach einen Wert zuweisen. Beispielsweise erstellt der Befehl $var4 = „variableexample“ eine Variable mit dem Namen $var4 und weist ihr einen Zeichenfolgenwert zu. Die doppelten Anführungszeichen ( „“ ) geben an, dass der Variablen ein Zeichenfolgenwert zugewiesen wird.
Get variable
Dies ist dem Befehl list variable sehr ähnlich, nur mit einem anderen Cmdlet:
Get-Variable | Out-String
Print variable
Sie können eine Variable a ausgeben .txt, .csv oder HTML-Datei.
Zu schreiben, um ein .,txt-datei, verwenden sie die Out-File befehl:
$var5 = "Hello World!"$var5 | Out-File C:\scripts\Hello_World.txt
Zu exportieren daten zu einem .,“d2d13912ee“>
Und um in eine HTML-Datei zu schreiben, verwenden Sie den Befehl ConvertTo-Html:
$var6 = Get-Process$var6 | ConvertTo-Html -Property Name, Path > C:\scripts\processes.html
Um eine Datei zu lesen, die wir exportiert haben, verwenden wir das Cmdlet Get-Content:
Get-Content C:\scripts\processes.csv
Variable löschen
Um den Inhalt einer Variablen zu löschen, verwenden Sie das Cmdlet“Variable löschen“:
Clear-Variable -name var6 #without $
Variable entfernen
Um eine Variable vollständig zu entfernen, verwenden Sie das Cmdlet „Variable entfernen“:
Remove-Variable -name var6 #without $
PowerShell-Arrays
Ein Array ist ein Typ einer Variablen., Es ist eine Reihe von Komponenten (Array-Elemente), die in einer bestimmten Reihenfolge angeordnet sind. Elemente des Arrays werden nacheinander nummeriert, und Sie greifen mit seiner Indexnummer auf ein Element zu.
Beachten Sie beim Erstellen von Arrays das standardmäßige PowerShell-Verhalten. Wenn Sie ein Array mit mehreren Elementen erstellen, erstellt PowerShell ein Array, wie Sie es beabsichtigen. Fügen Sie beispielsweise einige Zahlen in ein Array ein und überprüfen Sie dann den Datentyp der Variablen:
$array1 = 1, 2, 3$array1.GetType()
Wie Sie sehen, hat PowerShell in diesem Fall ein Array erstellt (System.Array).,
Wenn Sie jedoch nur einen Wert in eine Variable einfügen, erstellt PowerShell kein Array:
$array1 = 1$array1.GetType()
Natürlich können Sie nicht immer im Voraus sagen, wie viele Objekte als Ergebnis der Ausführung eines bestimmten Befehls empfangen werden.
Sie können dies auf viele Arten tun. Sie können beispielsweise den Operator „,“ verwenden. Wenn ein Komma als binärer Operator verwendet wird, wird ein normales Array erstellt; Wenn es als unärer Operator verwendet wird, hat das Array nur ein Element., Zum Beispiel, hier ist, wie können wir erhalten ein array, bestehend aus einem element:
$array1 = ,1$array1.GetType()
Alternativ können Sie explizit den Datentyp für eine variable:
]$array1 = 1$array1.GetType()
Schließlich können Sie auch ein array erstellen mit Teilausdruck operator „@“, Formen, die ein array auch wenn keine Objekte sind angegeben. Es ist sehr praktisch, eine Variable als Array zu initialisieren und dann Objekte hinzuzufügen, ohne sich Gedanken über ihre Anzahl zu machen.,
$array3 = @()$array3.GetType()
Beachten Sie, dass jedes Element eines Arrays einen eigenen Datentyp hat und Sie mit dem Typobjekt beliebige Werte zum Array hinzufügen können. Bei Bedarf können Sie die Mitglieder des Arrays auf einen bestimmten Datentyp beschränken — dann erstellen Sie ein „typisiertes Array“., Sie können beispielsweise angeben, dass Array-Elemente ganzzahlige Werte sein müssen:
]$array1 = 1$array1.GetType()
Und so definieren wir Systemprozesse als Array-Mitglieder:
]$array1 = Get-Process$array1.GetType()
Array List
Wenn Sie ein Array häufig ändern oder durchsuchen möchten, können Sie die ArrayList-Klasse verwenden, die entwickelt, damit Sie Elemente einfach hinzufügen, entfernen und suchen können:
$array3 = New-Object System.Collections.ArrayList
Array Index
Ein Index im Array ist ein Wert, normalerweise eine numerische Ganzzahl, mit der ein Array-Element identifiziert und referenziert wird., Array-Indizes beginnen je nach Programmiersprache entweder bei Null oder eins. Windows PowerShell-Arrays sind nullbasiert, um also auf das erste Element des Arrays $var3 („Element Null“) zu verweisen, würden Sie $var3 schreiben .
$var3 = "first", "second", "third"
Mehrdimensionale Arrays
Mehrdimensionale Arrays sind Variablen, mit denen Informationen in einer Tabelle gespeichert werden können, ohne sie in eine echte Datenbank schreiben zu müssen. Es sieht aus wie eine Hash-Tabelle, kann jedoch verschiedene Arten von Informationen wie Zeichenfolgen und Ganzzahlen speichern., Tatsächlich können Sie sich ein mehrdimensionales Array als Tabelle mit Spalten und Zeilen vorstellen, in der jede Zelle ihren eigenen Index in einer PowerShell-Umgebung hat.
PowerShell Array Examples
Array sortieren
Wenn ein Array nur einen Datentyp enthält, können Sie die Werte mit der Sortiermethode sortieren:
$array3 | Sort
Um ein Array mit mehr als einem Datentyp zu sortieren, müssen Sie das Sortierobjekt-Cmdlet verwenden.,
Zum Array hinzufügen
Erstellen wir zunächst ein Array:
$array5 = "one", "two", "three", "four", "five"$array5.gettype()
Um unser Array einfach zu ändern, müssen wir es der Arraylist-Sammlung hinzufügen:
$ArrayList1 = $array5$ArrayList1.GetType()
Wie Sie sehen, hat sich der Basistyp geändert und wir können unser Array jetzt einfach ändern:
$ArrayList1.Add("six")$ArrayList1.Remove("three")$ArrayList1
Array length
Um die Anzahl der Elemente im Array zurückzugeben, verwenden Sie die .,längenparameter:
$array6 = 1,2,3,4,5,6echo $array6.Length
Element aus Array entfernen
Um ein Element zu entfernen, verwenden Sie die .Befehl entfernen., Auch hier ist es besser, eine Arraylist zu verwenden:
$ArrayList1 = $array5$ArrayList1.GetType()$ArrayList1.Remove("three")$ArrayList1
Array enthält
Wenn Sie sehen möchten, ob eines der Elemente in einem Array einen bestimmten Wert enthält, verwenden Sie die Methode Contains:
Array löschen
Obwohl die meisten Array-Operationen in PowerShell relativ einfach durchzuführen sind, gibt es keine einfache Möglichkeit, ein Array zu löschen., Der einfachste Weg, ein ganzes Array loszuwerden, besteht darin, die Variable $null zuzuweisen:
$array7 = $null$array7
Um zu überprüfen, ob unser Array null ist, führen Sie das folgende Skript aus:
$array7 -eq $null
Wenn eine Variable null ist, können Sie in PowerShell keine Methoden darauf anwenden.
Print Array
Um ein ganzes Array zu drucken, können wir die gleichen Methoden zum Drucken von Variablen beschrieben verwenden.
Zu schreiben, um ein .txt-datei, verwenden sie die Out-File befehl:
$var5 | Out-File C:\scripts\array.txt
Zu exportieren .,csv-Datei verwenden Sie den Befehl Export-Csv:
$var6 | Export-Csv -Path C:\scripts\array.csv
Und um in eine HTML-Datei zu schreiben, verwenden Sie den Befehl ConvertTo-Html:
$var6 | ConvertTo-Html > C:\scripts\processes.html
Schleife durch ein Array
Um jedes Element in einem Array nacheinander zu behandeln, müssen wir eine Schleife mit dem foreach-Operator foreach. Wenn wir beispielsweise ein String-Array deklarieren und die Länge jedes Wortes im Array zählen möchten, sollten wir das folgende Skript ausführen:
$array8 = @("Earth","Mercury","Venus","Jupiter","Saturn","Mars", "Neptune", "Pluto") foreach ($array in $array8) { "$array = " + $array.length }
In diesem Artikel haben wir mehr über Variablen und ihre Typen erfahren., Dann haben wir einen Variablentyp — das Array— im Detail untersucht und gelernt, damit zu spielen. Mit diesen Informationen sind Sie bereit, noch tiefer in PowerShell einzutauchen.