Da wir nicht mehr nur Befehle ausführen, sondern vollständige Skripte schreiben, benötigen Sie einen temporären Speicherort für Daten. Hier kommen Variablen ins Spiel.
Lesen Sie unbedingt die vorherigen Artikel in der Reihe:
Und bleiben Sie die ganze Woche für den Rest der Serie dran.
Variablen
Die meisten Programmiersprachen erlauben die Verwendung von Variablen, bei denen es sich einfach um Container handelt, die Werte enthalten. In PowerShell gibt es auch Variablen, die sehr einfach zu verwenden sind. So erstellen Sie eine Variable mit dem Namen «FirstName» und geben ihr den Wert «Taylor».
$ FirstName = «Taylor»
Das erste, was die meisten Leute zu fragen scheinen, ist, warum wir ein Dollarzeichen vor den Variablennamen setzen, und das ist eigentlich eine sehr gute Frage. Das Dollarzeichen ist nur ein kleiner Hinweis auf die Shell, dass wir auf den Inhalt der Variablen zugreifen möchten (denken Sie daran, was sich im Container befindet) und nicht auf den Container selbst. In PowerShell enthalten Variablennamen kein Dollarzeichen, was bedeutet, dass im obigen Beispiel der Variablenname tatsächlich «Vorname» ist.
In PowerShell können Sie alle Variablen anzeigen, die Sie in der Variablen PSDrive erstellt haben.
gci Variable:

Das heißt, Sie können jederzeit auch eine Variable aus der Shell löschen:
Variable zum Entfernen von Elementen: Vorname
Variablen müssen auch kein einziges Objekt enthalten. Sie können genauso einfach mehrere Objekte in einer Variablen speichern. Wenn Sie beispielsweise eine Liste laufender Prozesse in einer Variablen speichern möchten, können Sie ihr einfach die Ausgabe von Get-Process zuweisen.
$ Proc = Get-Process
Der Trick, um dies zu verstehen, besteht darin, sich daran zu erinnern, dass die rechte Seite des Gleichheitszeichens immer zuerst ausgewertet wird. Dies bedeutet, dass Sie auf der rechten Seite eine gesamte Pipeline haben können, wenn Sie möchten.
$ CPUHogs = Get-Process | CPU sortieren – absteigend | Wählen Sie zuerst 3
Die Variable CPUHogs enthält jetzt die drei laufenden Prozesse mit der meisten CPU.

Wenn Sie eine Variable haben, die eine Sammlung von Objekten enthält, müssen Sie einige Dinge beachten. Wenn Sie beispielsweise eine Methode für die Variable aufrufen, wird sie für jedes Objekt in der Auflistung aufgerufen.
$ CPUHogs.Kill ()
Das würde alle drei Prozesse in der Sammlung töten. Wenn Sie auf ein einzelnes Objekt in der Variablen zugreifen möchten, müssen Sie es wie ein Array behandeln.
$ CPUHogs[0]
Dadurch erhalten Sie das erste Objekt in der Sammlung.

Lass dich nicht erwischen!
Variablen in PowerShell sind standardmäßig schwach typisiert, was bedeutet, dass sie jede Art von Daten enthalten können. Dies scheint ständig neue Leute in PowerShell zu erwischen!
$ a = 10
$ b = ’20’
Wir haben also zwei Variablen, eine enthält eine Zeichenfolge und die andere eine Ganzzahl. Was passiert also, wenn Sie sie hinzufügen? Es hängt tatsächlich davon ab, in welcher Reihenfolge Sie sie hinzufügen.
$ a + $ b = 30
Während
$ b + $ a = 2010
Im ersten Beispiel ist der erste Operand eine Ganzzahl, $ a. PowerShell glaubt also, dass Sie versuchen, Mathematik zu üben, und versucht daher, auch andere Operanden in Ganzzahlen umzuwandeln. Im zweiten Beispiel ist der erste Operand jedoch eine Zeichenfolge, sodass PowerShell nur den Rest der Operanden in Zeichenfolgen konvertiert und diese verkettet. Fortgeschrittenere Scripter verhindern diese Art von Gotcha, indem sie die Variable in den Typ umwandeln, den sie erwarten.
[int]$ Number = 5
[int]$ Number = ‘5’
Das Obige führt beide dazu, dass die Variable Number ein ganzzahliges Objekt mit dem Wert 5 enthält.
Ein- und Ausgabe
Da PowerShell dazu gedacht ist, Dinge zu automatisieren, sollten Sie vermeiden, Benutzer nach Informationen zu fragen, wo immer dies möglich ist. Vor diesem Hintergrund wird es Zeiten geben, in denen Sie dies nicht vermeiden können, und für diese Zeiten haben wir das Cmdlet Read-Host. Die Verwendung ist wirklich einfach:
$ FirstName = Read-Host –Prompt ‘Geben Sie Ihren Vornamen ein’

Was auch immer Sie eingeben, wird dann in der Variablen gespeichert.

Das Schreiben der Ausgabe ist mit dem Cmdlet Write-Output genauso einfach.
Schreibausgabe «How-To Geek Rocks!»

Komm morgen zu uns, wo wir alles, was wir gelernt haben, zusammenbinden!