Eines der ersten Dinge, die Sie beim Erlernen einer neuen Computersprache tun, ist das Erlernen der Eingabe und Ausgabe. Wir haben gelernt, wie man über den Tipp „Einführung in PowerShell“ ausgibt. Wenn Sie sich erinnern, haben wir das Cmdlet Write-Output verwendet. Jetzt ist es Zeit zu lernen, wie man eine Datei liest und ihre Ausgabe auf dem Bildschirm anzeigt.

Angenommen, wir haben eine Textdatei mit dem Namen „C: \ Temp \ Temp.txt“, die zehn Zeilen enthält. Die einfachste Möglichkeit, diese Zeilen anzuzeigen, ist die Verwendung des Cmdlets Get-Content. So sieht es aus, wenn Sie dieses Cmdlet für unsere Datei ausführen: (Siehe Abbildung 1.)

image

Abbildung 1. Get-Content liest eine Datei.

Was wäre, wenn Sie nur die ersten drei Zeilen der Datei anzeigen möchten?

Es gibt verschiedene Möglichkeiten, dies zu tun. Am einfachsten ist es jedoch, Variablen zu verwenden. In PowerShell kann eine Variable ein beliebiger Datentyp sein, und der Variablenname beginnt mit einem „$“. Beispiele für Variablennamen sind „$ myName“, „$ numbers“, „$ today“ usw. Sie weisen einer Variablen mit dem Zeichen „=“ einen Wert zu, sodass ein zulässiger PowerShell-Befehl

wäre

PS> $myName = 'Barry'

Vor diesem Hintergrund wissen wir jetzt genug, um die ersten drei Zeilen unserer Datei anzuzeigen. Wir weisen den Inhalt der Datei einer Variablen mit dem Namen $ lines zu und zeigen dann die ersten drei Zeilen an: (Siehe Abbildung 2.)

image

Abbildung 2. Verwenden einer Variablen.

Hier weisen wir den Inhalt der Datei der Variablen $ lines (die eigentlich ein Array ist) zu und verwenden die Syntax „[0..2]“, um auf die Elemente 0, 1 und 2 des Arrays zuzugreifen. Element 0 ist die erste Zeile; Element 1 ist die zweite Zeile; und Element 2 ist die dritte Zeile.

Es ist genauso einfach, auf die letzten Zeilen des Arrays zuzugreifen. Dies erfolgt unter Verwendung negativer Indizes, sodass $ line [-1] die letzte Zeile des Arrays ist. $ line [-2] ist die vorletzte Zeile des Arrays. usw. Die folgende Abbildung zeigt, wie die letzten drei Zeilen unserer Datei angezeigt werden: (Siehe Abbildung 3.)

image

Abbildung 3. Zugriff auf ein Array mit negativen Indizes.

Eine andere Möglichkeit, Text aus einer Datei abzurufen, besteht darin, danach zu suchen und die Ergebnisse anzuzeigen. Um in PowerShell nach Text zu suchen, verwenden Sie das Cmdlet Select-String. Select-String benötigt viele Schalter, die Sie sehen können, wenn Sie im Cmdlet um Hilfe bitten. Für ein einfaches Formular müssen Sie jedoch nur den Dateinamen und das gesuchte Muster angeben. Wenn ich also alle Zeilen in meiner Datei finden wollte, die den Text „Zeile“ enthalten (das wäre jede Zeile), könnte ich dies folgendermaßen tun: (Siehe Abbildung 4.)

image

Abbildung 4. Durchsuchen einer Datei nach einem Muster.

Select-String ist sehr leistungsfähig, da es mit regulären Ausdrücken sucht. (Es gibt einen weiteren Tipp mit dem Titel „Einführung in reguläre Ausdrücke“.) Wenn Sie also alle Zeilen suchen möchten, die mit einem „l“ beginnen und mit nur einer Ziffer enden (dh alle Zeilen außer Zeile 10), sieht dies so aus dies: (Siehe Abbildung 5.)

image

Abbildung 5. Durchsuchen einer Datei mit einem regulären Ausdruck.

Wir haben viel über das Lesen von Dateien gesprochen, daher sollten wir zum Schluss über das Schreiben von Dateien sprechen. Natürlich können Sie das bekannte „>“

verwenden Zeichen, um Ihre Ausgabe in eine Datei umzuleiten. In PowerShell können Sie jedoch auch das Cmdlet Out-File verwenden, um die Ausgabe an eine Datei zu senden.

Angenommen, Sie möchten eine Liste aller aktiven Prozesse auf Ihrem System erhalten. Das Cmdlet dafür ist Get-Process. Ein Teil der Ausgabe von Get-Process wird hier gezeigt: (Siehe Abbildung 6.)

image

Abbildung 6. Teilausgabe von Get-Process.

Beachten Sie, dass die achte Zeile der letzten abgeschnitten ist. Diese Zeile endet mit „vmware-usbarbitrat …​“. Wenn wir diese Ausgabe einfach an eine Datei senden würden, würde auch die Datei diese abgeschnittene Zeile enthalten. Stattdessen können wir den Schalter „-width“ von Out-File verwenden, um anzuzeigen, dass wir eine größere Breite wünschen, um das Abschneiden zu vermeiden. Hier ist unser Befehl, um die Prozesse abzurufen, die Ausgabe an Out-File weiterzuleiten und eine Breite für die Ausgabe anzugeben:

PS C:\Bat> Get-Process | Out-File C:\Temp\Temp2.txt -width 100

Dieser Tipp (13507) gilt für Windows 7, 8 und 10.