27Jul

Geek School: PowerShell-Variablen lernen, Input und Output

click fraud protection

Während wir uns von der Ausführung von Befehlen und dem Schreiben von vollständigen Skripts entfernen, benötigen Sie einen temporären Speicherort für Daten. Hier sind die Variablen enthalten.

Lesen Sie die vorherigen Artikel der Serie:

  • Lernen, wie man Windows mit PowerShell automatisiert
  • Lernen, Cmdlets in PowerShell zu verwenden
  • Lernen Verwenden von Objekten in PowerShell
  • Lernen Formatieren, Filtern und Vergleichen inPowerShell
  • Lernen Sie Remoting in der PowerShell
  • Verwenden von PowerShell zum Abrufen von Computerinformationen
  • Arbeiten mit Collections in der PowerShell

Und bleiben Sie die ganze Woche auf den Rest der Serie dran.

Variablen

Die meisten Programmiersprachen erlauben die Verwendung von Variablen, die einfach Container sind, die Werte enthalten. In PowerShell haben wir auch Variablen und sie sind wirklich einfach zu bedienen. So erstellen Sie eine Variable namens "FirstName" und geben ihr den Wert "Taylor".

$ FirstName = "Taylor"

instagram viewer

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. Wirklich, das Dollarzeichen ist nur ein kleiner Hinweis auf die Shell, dass wir auf den Inhalt der Variablen zugreifen wollen( denken Sie, was in dem Container ist) und nicht den Container selbst. In PowerShell enthalten Variablennamen kein Dollarzeichen, was bedeutet, dass im obigen Beispiel der Name der Variablen tatsächlich "FirstName" lautet.

In PowerShell können Sie alle Variablen sehen, die Sie in der Variablen PSDrive erstellt haben.

gci-Variable:

Das bedeutet, dass Sie auch jederzeit eine Variable aus der Shell löschen können:

Remove-Item Variable: \ FirstName

Variablen müssen auch kein einzelnes Objekt enthalten;Sie können ebenso 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, dies zu verstehen, besteht darin, daran zu denken, dass die rechte Seite des Gleichheitszeichens immer zuerst ausgewertet wird. Dies bedeutet, dass Sie auf der rechten Seite eine ganze Pipeline haben können, wenn Sie möchten.

$ CPUHogs = Get-Process |CPU sortieren -Descending |select -First 3

Die Variable CPUHogs enthält nun die drei laufenden Prozesse mit der höchsten CPU.

Wenn Sie eine Variable mit einer Sammlung von Objekten haben, 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 beenden. 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 alle Arten von Daten enthalten können. Dies scheint die PowerShell ständig zu treffen!

$ a = 10

$ b = '20'

Also haben wir zwei Variablen, eine enthält eine Zeichenkette und die andere eine ganze Zahl. 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 ganze Zahl, $ a, also glaubt PowerShell diesSie versuchen, Mathe zu tun und versuchen daher, alle anderen Operanden in ganze Zahlen umzuwandeln. Im zweiten Beispiel ist der erste Operand jedoch eine Zeichenfolge, daher konvertiert PowerShell nur die restlichen Operanden in Zeichenfolgen und verkettet sie. Fortgeschrittenere Scripter verhindern diese Art von GOTCHA, indem sie die Variable in den erwarteten Typ umwandeln.

[int] $ Nummer = 5
[int] $ Nummer = '5'

Das obige Ergebnis ergibt die Variable Number, die ein ganzzahliges Objekt mit dem Wert 5 enthält.

Eingabe und Ausgabe

Da PowerShell die Dinge automatisieren sollSie werden vermeiden wollen, Benutzer zu informieren, wo immer dies möglich ist. Mit dem gesagt, es wird Zeiten geben, wo Sie es nicht vermeiden können, und für diese Zeiten haben wir das Read-Host-Cmdlet. Die Verwendung ist sehr einfach:

$ FirstName = Lese-Host -Prompt 'Geben Sie Ihren Vornamen ein'

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

Das Schreiben von Ausgaben ist mit dem Cmdlet Write-Output genauso einfach.

Write-Output "How-To Geek rockt!"

Begleiten Sie uns morgen, wo wir alles, was wir gelernt haben, miteinander verbinden!