Write-Host to polecenie PowerShell, które wypisuje tekst prosto na ekran konsoli — i tylko tam. W przeciwieństwie do Write-Output nie wysyła nic do potoku (pipeline), więc idealnie nadaje się do komunikatów dla człowieka: statusów, nagłówków, ostrzeżeń czy kolorowych podpowiedzi. Jego znakiem rozpoznawczym są kolory: możesz malować tekst na czerwono, zielono czy żółto, co robi robotę w skryptach diagnostycznych. Od PowerShell 5.0 pod spodem Write-Host jest opakowaniem na Write-Information, więc jego wyjście trafia do strumienia informacyjnego (numer 6) i da się je przechwycić lub wyciszyć.
Składnia i najważniejsze opcje
Podstawowa forma wygląda tak: Write-Host [-Object]
-Object— tekst lub obiekt do wyświetlenia; parametr pozycyjny, więc nazwy zwykle nie piszesz.-ForegroundColor— kolor tekstu, np.Red,Green,Yellow,Cyan(typConsoleColor).-BackgroundColor— kolor tła pod tekstem, ta sama pula kolorów co wyżej.-NoNewline— nie dodaje znaku nowej linii na końcu; kolejnyWrite-Hostdopisze się w tym samym wierszu.-Separator— ciąg wstawiany między elementami, gdy podasz kilka obiektów naraz (np. tablicę).
Przykłady użycia
Write-Host "Skrypt zakonczony"— wypisuje zwykły komunikat i przechodzi do nowej linii.Write-Host "BLAD: brak pliku" -ForegroundColor Red— czerwony tekst, żeby błąd rzucał się w oczy.Write-Host " OK " -ForegroundColor Black -BackgroundColor Green— czarny napis na zielonym tle, taka mini-plakietka statusu.Write-Host "Trwa kopiowanie..." -NoNewline; Write-Host " gotowe" -ForegroundColor Green— najpierw fragment bez łamania linii, potem dopisek w tej samej linii.Write-Host 1 2 3 -Separator " -> "— wypisze1 -> 2 -> 3, bo separator sklei elementy.
Częste błędy i pułapki
Największa pułapka: Write-Host nie zwraca wartości do potoku. Jeśli napiszesz $x = Write-Host "test", to w $x wyląduje $null, a tekst i tak pójdzie na ekran. Do przechwytywania wartości używaj Write-Output albo po prostu zostaw wyrażenie bez cmdletu. Druga sprawa: nie da się prosto przekierować wyjścia do pliku przez >, bo to strumień informacyjny — musisz łapać go przez 6> lub -InformationVariable. Kolejny klasyk to nietrafiona nazwa koloru — dozwolone są tylko wartości z [System.ConsoleColor] (np. DarkGray, Magenta), literówka rzuci błędem. W PowerShell 7 na starych terminalach niektóre kolory tła bywają nieczytelne, więc testuj na docelowej konsoli.
Powiązane komendy: Write-Output, Write-Information, Write-Verbose, Write-Warning, Write-Error.