Jaka jest różnica między Write-Host i Write-Output w PowerShell?
Lubić...
Write-Host "Hello World ";
Write-Output "Hello World";
windows
powershell
daniyalahmad
źródło
źródło
Write-Output wysyła dane wyjściowe do potoku. Stamtąd można go przesłać potokiem do innego polecenia cmdlet lub przypisać do zmiennej. Write-Host wysyła go bezpośrednio do konsoli.
$a = 'Testing Write-OutPut' | Write-Output $b = 'Testing Write-Host' | Write-Host Get-Variable a,b
Wyjścia:
Jeśli nie powiesz Powershell, co zrobić z wyjściem do potoku, przypisując go do zmiennej lub przesyłając go do innego polecenia, zostanie on wysłany do out-default, którym jest zwykle konsola, więc wynik końcowy wygląda tak samo .
źródło
Write-Output
przesyła dane jako obiekt przez potok. W przykładzie z pytaniami po prostu przekaże ciąg.write-host
zależy od hosta. W konsoliwrite-host
zasadniczo robi[console]::WriteLine
. Zobacz to, aby uzyskać więcej informacji.źródło
Write-Ouput
wysyła przedmioty. Tym razem był to ciąg znaków, ale generalnie wysyła obiekty i zwykle nie jest potrzebny, ponieważ jest to domyślny sposób wyświetlania wyników / danych :)Kolejna różnica między Write-Host i Write-Output:
Write-Host wyświetla komunikat na ekranie, ale nie zapisuje go w dzienniku
Write-Output zapisuje komunikat w dzienniku, ale nie wyświetla go na ekranie.
A Write-Host jest uważany za szkodliwy. Szczegółowe wyjaśnienie można znaleźć w artykule Write-Host Consented Consented Harmful .
źródło
Write-Output
wyświetla komunikat na ekranie, jeśli sam uruchamiasz skrypt. Nie jestem więc pewien, co masz na myśli, mówiąc „Write-Output zapisuje komunikat w dzienniku, ale nie wyświetla go na ekranie”. ?Możesz zrozumieć różnicę między dwoma cmds z poniższego przykładu:
Write-host "msgtxt" | Get-Service Po uruchomieniu powyżej otrzymasz wynik jako "msgtxt"
Zapis-wyjście "msgtxt" | Get-Service Po uruchomieniu powyżej pojawi się błąd, ponieważ msgtxt nie jest nazwą żadnej usługi (w idealnym stanie) (ponieważ zapisujesz go do potoku i jest przekazywany jako dane wejściowe do Get-Service)
źródło