Um die Wahrheit zu sagen: Wir haben keine Ahnung, wovon Skriptautoren träumen. Und um ehrlich zu sein, wir wollen es auch gar nicht wissen. Wir würden jedoch Geld darauf wetten, dass auch Skriptautoren in Farbe träumen.
Woher wir das wissen wollen? Ganz einfach: Letztendlich sind Träume das Einzige, was Skriptautoren in Farbe sehen. Um es mit Henry Ford zu sagen ... mit Wscript.Echo können Skriptautoren jede beliebige Farbe nutzen - solange es sich um weißen Text auf schwarzem Hintergrund handelt.
Anmerkung: Ja, oder auch jede andere Farbe, die Sie als Hintergrundfarbe einstellt haben. Aber Sie wissen, was wir meinen.
Mit anderen Worten, wir leben in einer bunten Welt - solange wir uns nicht mit der Entwicklung von Administrationsskripts beschäftigen. Wie wäre es mit einem Rätsel?
Was ist Schwarz und Weiß ohne Rot (oder irgendeine andere Farbe)? Genau. Text in einer Eingabeaufforderung.
Anmerkung: Ok, gut. Zebra und Panda wäre auch richtig. Aber danach haben wir nicht gesucht.
Etwas, das nicht Schwarz und Weiß ohne Rot ist, ist die neue Windows Monad Shell. Haben Sie sich jemals überlegt, wie es wohl wäre, lila Text auszugeben? (keine Sorge - wir würden das auch nicht freiwillig zugeben). Wir haben nicht nur darüber nachgedacht, sondern haben es getan:

Bevor Sie fragen, nein, das ist kein Trick mit einem Bildbearbeitungsprogramm. Das ist wirklich eine lila Skriptausgabe. Und so haben wir es gemacht:
$strComputer = "."
$colItems = get-wmiobject -class "Win32_Process" -namespace "root\CIMV2" `
-computername $strComputer | write-object
foreach ($objItem in $colItems) {
write-host $objItem.Name, $objItem.WorkingSetSize -foregroundcolor "magenta"
}Anmerkung: Bei Monad steht das Zeichen ` für einen Zeilenumbruch. Es entspricht dem Unterstrich (_) bei WSH und VBScript.
Wir werden nicht den gesamten in diesem Artikel verwendeten Programmcode besprechen. Wenn Sie mehr über den Zugriff auf WMI-Daten wissen wollen, sollten Sie den Artikel Zugriff auf WMI über die Windows "Monad" Shell lesen. Im Moment konzentrieren wir uns stattdessen auf das Cmdlet write-host. Es wird verwendet, um Daten in die Eingabeaufforderung zu schreiben. Write-host entspricht Wscript.Echo: Sie geben einfach die auszugebenden Daten als Parameter an. Das folgende Skript gibt zum Beispiel das Ergebnis von 2 + 2 aus:
write-host (2 + 2)
Anmerkung: Wir wollen Ihnen nicht die Spannung rauben, aber die Antwort ist 4.
Wahrscheinlich nicht gerade das Spektakulärste, was Sie je gesehen haben. Aber wären Sie beeindruckter, wenn die Ausgabe Lila wäre? Unmöglich, sagen Sie? Dann versuchen Sie Folgendes:
write-host (2 + 2) –foreground "magenta"
Haben wir doch gesagt.
Wie sich herausstellt, ist der Parameter -foregroundcolor für die Farbe des ausgegebenen Textes zuständig.
Nett, was? Und keine Sorge. Wenn Sie kein Lila mögen, haben Sie noch andere Farben zur Auswahl:
| • | Black |
| • | Blue |
| • | Cyan |
| • | DarkBlue |
| • | DarkCyan |
| • | DarkGray |
| • | DarkGreen |
| • | DarkMagenta |
| • | DarkRed |
| • | DarkYellow |
| • | Gray |
| • | Green |
| • | Magenta |
| • | Red |
| • | White |
| • | Yellow |
Außerdem können Sie mit dem Parameter -backgroundcolor die Hintergrundfarbe festlegen:
$strComputer = "."
$colItems = get-wmiobject -class "Win32_Process" -namespace "root\CIMV2" `
-computername $strComputer | write-object
foreach ($objItem in $colItems) {
write-host $objItem.Name, $objItem.WorkingSetSize `
-foregroundcolor "magenta" –backgroundcolor "yellow"
}Wenn Sie dieses Skript ausführen, sieht die Ausgabe so aus:

Ok, jetzt wissen Sie auch, warum keiner der Scripting Guys den Durchbruch als Künstler geschafft hat.
Überlegen wir uns einen etwas besseren Einsatzzweck für die Farben. Das folgende Skript fragt eine Liste mit Prozessen ab. Dann zeigt es Name und Größe der Prozesse an. Wenn ein Prozess größer als 3.000.000 Byte ist, dann wird er lila angezeigt:
$strComputer = "."
$colItems = get-wmiobject -class "Win32_Process" -namespace "root\CIMV2" `
-computername $strComputer | write-object
foreach ($objItem in $colItems) {
if ($objItem.WorkingSetSize -gt 3000000) {
write-host $objItem.Name, $objItem.WorkingSetSize -foregroundcolor "magenta" }
else {write-host $objItem.Name, $objItem.WorkingSetSize}
}Und die Ausgabe sieht dann so aus:

Wir schätzen, Henry Ford würde weinen vor Freude.