Sagen Sie auf Wiedersehen zu langweiligen, vorhersehbaren Skriptausgaben! Mit dem PowerShell Write-Output
Cmdlet können Sie Ihren PowerShell-Skripten eine Prise Kreativität und Persönlichkeit verleihen.
Das Write-Output
Cmdlet ist ein leistungsstarkes Werkzeug und ein perfekter Begleiter für alle Ihre Automatisierungs- und Systemverwaltungsanforderungen. In diesem Tutorial erfahren Sie, wie Sie das Potenzial des Write-Output
Cmdlets maximal ausschöpfen können.
Bereit? Lesen Sie weiter und entdecken Sie die Magie des Write-Output
Cmdlets!
Voraussetzungen
Dieses Tutorial wird eine praktische Demonstration sein. Um mitzumachen, stellen Sie sicher, dass Sie einen Computer mit PowerShell installiert haben (vorzugsweise die neueste Version). Dieses Tutorial verwendet Windows 10 mit installiertem PowerShell 7.
Objekte in die Konsole ausgeben
Das PowerShell Write-Output
Cmdlet schreibt Objekte in den Ausgabestream und zeigt die Ausgabe eines Befehls oder einer Nachricht in der Konsole an. Aber Sie werden überrascht sein, wie dieses Werkzeug die Ausgabe sinnvoller und wertvoller macht.
Statt die Ausgabe in der Konsole anzuzeigen, verwenden Sie das Write-Output
-Cmdlet, um die Ausgabe anzupassen. Das Write-Output
-Cmdlet kann jedes Objekt oder jeden Datentyp wie Zeichenketten, Ganzzahlen, Arrays und sogar komplexe Objekte ausgeben.
Führen Sie den folgenden Befehl aus, um eine Hallo, Welt!-Nachricht in der Konsole auszugeben.
Unten sehen Sie die grundlegendste Funktion des Write-Output
-Cmdlets. Aber lesen Sie weiter, um mehr über die fortgeschrittene Verwendung dieses Cmdlets zu erfahren.<>

Objekte an ein anderes Cmdlet übergeben
Neben der Anzeige der Ausgabe in der Konsole können Sie das Write-Output
-Cmdlet verwenden, um das Objekt an ein anderes Cmdlet zur weiteren Verarbeitung zu senden. Wie? Durch Verwendung des Pipe-Operators (|
). Pipelining macht Write-Output
zu einem praktischen und vielseitigen Befehl für Automatisierungs- und Systemverwaltungsaufgaben.
Angenommen, Sie möchten sehen, welcher Prozess die meisten Ihrer Ressourcen, wie die CPU, verbraucht.
Führen Sie die unten stehenden Befehle aus, um Folgendes zu erreichen:
- Liste aller auf Ihrem System ausgeführten Prozesse abrufen (
Get-Process
). - Geben Sie die Liste an die Pipeline weiter, die dann an den Befehl
Sort-Object
übergeben wird. Der Pipeline-Operator ermöglicht es Ihnen, mehrere Befehle miteinander zu verknüpfen und die Ausgabe eines Befehls als Eingabe für einen anderen zu verarbeiten. - Sortieren Sie die Liste der Prozesse (
Sort-Object
) nach ihrerCPU
-Auslastung in absteigender Reihenfolge (-Descending
).
Beachten Sie, dass Sie jeden der Befehle in diesem Tutorial in ein PowerShell-Skript einfügen und ausführen können.
Die sortierte Liste wird in der Konsole angezeigt, wie unten gezeigt.

Objekte mit einem benutzerdefinierten Format ausgeben
Sie haben das grundlegende Ausgabeformat des Write-Output-Cmdlets gesehen, das gut funktioniert. Wenn Sie möchten, können Sie jedoch auch Objekte mit einem benutzerdefinierten Format ausgeben, um eine persönliche Note hinzuzufügen. Ein benutzerdefiniertes Format kann nützlich sein, wenn Sie bestimmte Eigenschaften von Objekten anzeigen oder das Erscheinungsbild der Ausgabe anpassen möchten.
Um ein Objekt mit einem benutzerdefinierten Format auszugeben, verwenden Sie das Cmdlet Format-Custom
zusammen mit dem Cmdlet Write-Output
, wie folgt:
um das benutzerdefinierte Ausgabeformat zu erstellen, und leiten Sie dann die Ausgabe des Format-Custom-Cmdlets an Write-Output weiter.<>
Führen Sie den folgenden Befehl aus, der keine Ausgabe erzeugt, sondern ein Objekt (eine Hashtable) erstellt, das drei Eigenschaften mit den entsprechenden Werten enthält, die ausgegeben werden sollen.
Führen Sie nun den folgenden Befehl aus, um Folgendes durchzuführen:
- Erstellen Sie ein benutzerdefiniertes Format (
Format-Table
) für die Ausgabe (Write-Output
) Ihrer Hashtable ($object
). Die EigenschaftenProperty1
,Property2
undProperty3
werden als Spalten festgelegt. - Passen Sie die Spaltenbreiten (
-AutoSize
) an, um den Inhalt anzupassen.

Alternativ können Sie das Format-List
-Cmdlet mit Write-Output
verwenden, um das Objekt als Liste von Eigenschafts-Wert-Paaren auszugeben.

Übergabe eines Sammlungsobjekts als einzelne Einheit
Standardmäßig sendet Write-Output
jedes Element der Sammlung einzeln durch die Pipeline, ein Vorgang, der als Enumeration bezeichnet wird. Sie können dieses Verhalten jedoch verhindern, indem Sie den Parameter -NoEnumerate
anhängen und das gesamte Sammlungsobjekt als einzelne Einheit übergeben.
Um zu sehen, wie der Parameter -NoEnumerate
funktioniert, befolgen Sie diese Schritte:
Führen Sie die folgenden Befehle aus, um Folgendes durchzuführen:
- Deklarieren Sie ein Array von
$numbers
von eins bis drei (1,2,3
).
- Zählen Sie die Anzahl der Objekte (
Measure-Object
), die durch die Pipeline geleitet werden. - Geben Sie die Objektmessung aus (
Write-Output $numbers
).
Ohne den Parameter NoEnumerate
gibt Measure-Object
eine Anzahl von drei (3) zurück, da jedes Element des Arrays $numbers
einzeln aufgezählt und einzeln durch die Pipeline geleitet wurde.

Führen Sie nun die folgenden Befehle aus, um die Anzahl der Objekte auszugeben, die durch die Pipeline geleitet wurden.
Aber da Sie den Parameter -NoEnumerate
angehängt haben, behandelt das Measure-Object
-Cmdlet das Objekt als einzelne Einheit und gibt eine Anzahl von einem (1) zurück.

Das Umgeben des
Write-Output
-Befehls mit Klammern (d.h.(Write-Output 1,2,3)
) erzwingt eine Aufzählung, unabhängig vom-NoEnumerate
-Parameter.
Erstellen eines Menüsystems und Eingabeaufforderungen
Noch eine ausgezeichnete Verwendung des Write-Output
-Cmdlets besteht darin, ein Menüsystem mit einem PowerShell-Skript zu erstellen, das den Benutzer nach Eingaben fragt.
Erstellen Sie eine .ps1-Datei mit Ihrem bevorzugten Text-/Code-Editor, fügen Sie den untenstehenden Code ein und speichern Sie die Datei. Sie können die Datei nach Belieben benennen, aber in diesem Tutorial wird sie myoutput.ps1 genannt.
Der folgende Code verwendet eine Schleife, um den Benutzer kontinuierlich zur Auswahl einer Option aus einer Liste von Optionen aufzufordern, bis der Benutzer die Option Exit
auswählt.
Führe nun das Skript (myoutput.ps1
) aus dem Arbeitsverzeichnis aus.
Wie unten gezeigt, wird die mit Ihrer Auswahl verbundene Nachricht angezeigt, wenn Sie die Optionen 1, 2 oder 3 wählen. Wenn Sie jedoch Option 4 auswählen, wird das Skript beendet.

Anzeigen eines Startbildschirms oder einer Begrüßungsnachricht
Abgesehen von der Auflistung der Optionen, aus denen die Benutzer wählen können, können Sie mit Write-Output
auch einen Begrüßungsbildschirm oder eine Willkommensnachricht anzeigen. Ansprechende Begrüßungsbildschirme hinterlassen einen guten Eindruck (professionell und poliert) bei Ihrem Skript.
Ersetzen Sie den Code in Ihrer myoutput.ps1 Datei durch den untenstehenden, der einen Begrüßungsbildschirm (einen Banner einer Willkommensnachricht) ausgibt, wenn Sie Ihr Skript ausführen.
Sie können den Begrüßungsbildschirm anpassen, indem Sie den Text und das Format des Banners ändern. Sie können zusätzliche Elemente wie ein Logo oder Text zum Begrüßungsbildschirm hinzufügen, wie gewünscht.
Führen Sie nun das Skript aus und sehen Sie, wie Ihr Begrüßungsbildschirm aussieht.

Anzeigen einer Fortschrittsanzeige
Beim Ausführen von Skripts beseitigt ein Fortschrittsanzeiger die Angst des Benutzers, ob das Skript läuft oder nicht. Fortschrittsanzeigen können nützlich sein, um dem Benutzer den Fortschritt eines lang laufenden Skripts oder einer Operation anzuzeigen. Glücklicherweise können Sie mit dem Write-Output
-Befehl eine Fortschrittsanzeige nach Ihren Wünschen erstellen.
Öffnen Sie Ihre myoutput.ps1 Datei und fügen Sie den untenstehenden Code am Ende des vorhandenen in der Skriptdatei hinzu.
Der untenstehende Code verwendet eine while
-Schleife, um durch mehrere Schritte zu iterieren. In diesem Beispiel 100 Schritte. Jede Iteration der Schleife berechnet den Prozentsatz der abgeschlossenen Schritte und zeigt eine Fortschrittsanzeige mit Write-Output
an.
Die Fortschrittsanzeige wird mithilfe einer Kombination der folgenden Operatoren erstellt:
*
– Wiederholt einen String eine angegebene Anzahl von Malen$()
– Ermöglicht es, den Ausdruck in einen String einzubeziehen.
Das Skript pausiert dann (Start-Sleep
) für 1
Sekunde, um den Fortschritt zu simulieren, bevor es zum nächsten Schritt übergeht.
Jetzt führen Sie das Skript aus und sehen, wie die Fortschrittsleiste funktioniert.
Unten sehen Sie den Startbildschirm zusammen mit der Fortschrittsleiste.

Fazit
In diesem Tutorial haben Sie gesehen, wie Write-Output
leicht Objekte, Datentypen und benutzerdefinierte Formate ausgeben kann. Außerdem haben Sie erfahren, wie Sie den Pipeline-Operator verwenden, um Ausgaben an andere Befehle zur weiteren Verarbeitung zu senden.
Ob Sie eine einfache Nachrichtenausgabe oder komplexe Automatisierungsaufgaben schreiben, ist `Write-Output` ein unverzichtbares Werkzeug zur Erstellung informativerer und professioneller PowerShell-Skripte.
Mit diesem neu gewonnenen Wissen, warum nicht Ihre Ausgaben in verschiedene Dateitypen schreiben, wie `.txt` und `.xml` Dateien?
Source:
https://adamtheautomator.com/powershell-write-output/