Write-Host

Wyświetla niestandardowy tekst bezpośrednio na ekranie/konsoli.

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] [-ForegroundColor ] [-BackgroundColor ] [-NoNewline] [-Separator ]

  • -Object — tekst lub obiekt do wyświetlenia; parametr pozycyjny, więc nazwy zwykle nie piszesz.
  • -ForegroundColor — kolor tekstu, np. Red, Green, Yellow, Cyan (typ ConsoleColor).
  • -BackgroundColor — kolor tła pod tekstem, ta sama pula kolorów co wyżej.
  • -NoNewline — nie dodaje znaku nowej linii na końcu; kolejny Write-Host dopisze 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 " -> " — wypisze 1 -> 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.