O szkodliwości Write-Host

By Po godzinach

Unikanie polecenia Write-Host jest jedną z wielu dobrych praktyk związanych z PowerShell. Sam Jeffrey Snover, twórca PowerShell nazwał je złym, szkodliwym. Taka łatka ciągnie się za Write-Host do dziś.

Pytanie, czy aby słusznie?

Po przeczytaniu będziesz wiedział, skąd to się wzięło i dlaczego niektóre zarzuty dotyczące Write-Host są nieaktualne i kiedy rozważać użycie tego polecenia.

Zły Write-Host, zły

Zastanawiałeś się, czemu wyniki polecenia Write-Host nie trafiają do pliku?

zły write-host, zły

Albo czemu wynik Write-Host nie zapisuje się do zmiennej?

Bo się nie da.

Bzdura

Tak było kiedyś. W PowerShell 5.0 postanowiono poprawić największy problem Write-Host, polegający na omijaniu strumienia wyjścia (i każdego innego) i wysyłanie wyniku bezpośrednio do „hosta”.

Wraz z PowerShell 5.0 pojawił się dodatkowy strumień informacji, z którego korzysta Write-Host. Teraz wiadomości trafiają do strumienia informacji a dopiero później na ekran.

Z pozoru tak mała zmiana, zmniejsza jego szkodliwość, ponieważ teraz możemy przekierować strumień informacji do strumienia wyjścia. Tego, czego wcześniej nie dało się zrobić.

Co to ten strumień?

PowerShell obecnie ma 6 strumieni, które służą do izolowania wiadomości odpowiednich typów. Wygląda to mniej więcej tak.

Powershell, streams, strumienie

Na przykład przekazywane obiekty w potoku korzystają ze strumienia wyjścia/sukcesu i tylko tego typu wiadomości trafią do kolejnego polecenia. Dzięki temu rozwiązaniu, błędy, ostrzeżenia, komunikaty nie zaśmiecają potoku. .

Zobacz przykład.

PowerShell, stream, strumienie, przykład

Przekierowywanie

Tak jak wspomniałem już wyżej, możemy przekierowywać wiadomości do strumienia wyjścia/sukcesu. Wykonasz to za pomocą operatora n>&1 gdzie n to numer konkretnego strumienia (lub * która oznacza wszystkie strumienie).

PowerShell, Write-Host, przekierowanie
PowerShell, Write-Host, przekierowanie, przykład

W ten sposób przekierujesz do pliku również komunikaty polecenia Write-Host, ale również Write-Error, Write-Warning, Write-Verbose itd.

Kiedy używać

Write-Host mimo “wad” ma jedną ogromną zaletę, umożliwia dostosowywanie kolorystyki zwracanych obiektów.

Jak wszyscy wiemy, kolor przykuwa naszą uwagę, kolorem jesteśmy w stanie wyróżnić to, co ważne. Dlatego w interaktywnych skryptach warto wykorzystać Write-Host i jego parametry -ForegroundColor lub -BackgroundColor.

Zobacz świetny moduł Graphical, którego działanie nie miałby sensu, gdyby nie możliwości Write-Host.

W innym przypadkach korzystaj przede wszystkim z Write-Output lub Write-Verbose.

Podsumowanie

Moim celem było abyś po przeczytaniu wpisu widział więcej na temat Write-Host i mam nadzieje, że to się udało. Chciałem również pokazać, że PowerShell się zmienia i trzeba uważać na treści które powstały kilka lat temu.

22 Najważniejsze Wskazówki Pisania Skryptów PowerShell

No comments yet.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.

× Close