Steuern der Ausgabe von Windows PowerShell-Befehlen


In früheren Artikeln zu Windows PowerShell wurden zwei der drei Punkte behandelt, die beim Schreiben von Funktionen in Produktionsqualität zu berücksichtigen sind – Eingabe und Fehlerbehandlung. Jetzt ist es Zeit, den letzten Faktor zu betrachten: Ausgabe.

Die Ausgabe von Skripten und Befehlen war lange Zeit mühsam und inkonsistent, selbst innerhalb desselben Tools. Die Benutzer wussten nicht, was sie erwarten sollten, bis zu dem Punkt, dass wir heutzutage ganze Toolsets haben (wie z awk, sed oder grep) und Fähigkeiten, die darauf basieren, die Ausgabe in die am meisten gewünschten Daten umzuwandeln. Einer der Hauptmandanten von Windows PowerShell besteht darin, die Art von Ausgabe zu haben, die Benutzer erwarten, ohne Text analysieren zu müssen. Wie macht PowerShell das? Die Antwort ist mit Objekten, wie ich in meinem vorherigen Artikel erklärt habe: Was macht Windows PowerShell einzigartig?

Bevor wir uns die von PowerShell zum Schreiben von Daten bereitgestellten Cmdlets ansehen, ist es wichtig zu verstehen, wie PowerShell mit der Ausgabe umgeht. Die meisten Shells haben ein Konzept von Datenströmen, die häufigsten sind stdout und stderr. PowerShell hat ein ähnliches Konzept, nur wir nennen sie Pipelines.

In PowerShell gibt es drei grundlegende Pfade für Daten:

  • Ausgabe – Dies wird allgemein als Pipeline bezeichnet. Hier werden Daten von Befehl zu Befehl weitergegeben.

  • Gastgeber – Dies wird direkt in die Konsole geschrieben.

  • Error – Dies wird direkt in die Konsole geschrieben, aber auch in $ error gespeichert.

PowerShell verfügt über viele Cmdlets zum „Schreiben“ von Daten. Die beiden wichtigsten sind:

  • Write-Host – Dies ist ein einfaches Cmdlet. Es schreibt Daten direkt in die Konsole und umgeht die Pipeline. Dies ist nützlich, wenn Sie dem Benutzer Informationen bereitstellen möchten, ohne die Pipeline zu verschmutzen.

  • Schreibausgabe – Dies wird verwendet, um Daten explizit direkt in die Pipeline zu schreiben. Ich sage “explizit”, denn wenn Sie nichts angeben, wird standardmäßig in die Pipeline geschrieben.

Andere Schreib-Cmdlets umfassen:

  • Write-Debug – Schreibt Debug-Anweisungen in die Konsole, wenn $ DebugPreference auf “continue” gesetzt ist.

  • Schreibfehler – Schreibt direkt in den Fehlerstrom.

  • Write-EventLog – Schreibt in das Ereignisprotokoll.

  • Schreibfortschritt – Hier können Sie einen Fortschrittsbalken für den Benutzer auf den Bildschirm schreiben. Dies wird im Allgemeinen für lange falsche Befehle verwendet, mit denen Sie den Fortschritt verfolgen können.

  • Write-Verbose – Schreibt auf den Host, wenn $ VerbosePreference auf “Weiter” gesetzt ist.

  • Schreibwarnung – Schreibt mit einem Warnschild auf den Host.

Wie Sie sehen, gibt es viele Möglichkeiten, Benutzern Feedback zu geben. Der Schlüssel zum Erfolg liegt darin, Ihre Werkzeuge mit Bedacht einzusetzen. Um beispielsweise einem Benutzer eine Nachricht anzuzeigen, möchten Sie Write-Host anstelle von Write-Output verwenden. Warum? Da Sie Ihre Ausgabe nicht mit Notizen für Benutzer verschmutzen möchten, ist es wichtig, dass Ihre Pipeline mit den vom Benutzer erwarteten Objekten fließt. Mit einer sauberen Pipeline kann ein Benutzer konsistente Daten mit erwarteten Eigenschaften erwarten, auf die er zugreifen kann, ohne Daten analysieren zu müssen.

Mit anderen Worten, eine saubere Pipeline sorgt für einen zufriedenen Benutzer.

Vermissen Sie eine Kolumne? Schauen Sie sich unser Archiv der Scripting School an.

ÜBER DEN AUTOR
Brandon Shell ist seit 1994 in der IT-Branche tätig. Er begann als PC-Techniker und allgemeiner Fix-It-Mitarbeiter für zahlreiche Unternehmen. 2007 trat er den PowerShell MVP-Reihen bei, und Shell hat in den letzten Jahren sein PowerShell-Wissen aufgebaut und anderen beim Aufbau ihres Wissens geholfen.

Dig Deeper auf Windows-Verwaltungstools

Similar Posts

Leave a Reply