¿Diferencia de PowerShell entre Write-Host y Write-Output?

¿Cuál es la diferencia entre Write-Host y Write-Output en PowerShell?

Me gusta…

Write-Host "Hello World "; Write-Output "Hello World"; 

En pocas palabras, Write-Host escribe en la consola. Piénselo como un MsgBox en VBScript . Write-Output , por otro lado, escribe en la canalización, por lo que el próximo comando puede aceptarlo como su entrada. No es necesario que utilice Write-Output para escribir objetos, ya que Write-Output se llama implícitamente por usted.

 PS> Get-Service 

sería lo mismo que:

 PS> Get-Service | Write-Output 

Write-Output envía la salida a la tubería. A partir de ahí, puede canalizarse a otro cmdlet o asignarse a una variable. Write-Host lo envía directamente a la consola.

 $a = 'Testing Write-OutPut' | Write-Output $b = 'Testing Write-Host' | Write-Host Get-Variable a,b 

Productos:

 Testing Write-Host Name Value ---- ----- a Testing Write-OutPut b 

Si no le dices a Powershell qué hacer con la salida a la tubería asignándola a una variable o conectándola a otra orden, se envía a la configuración predeterminada, que normalmente es la consola, por lo que el resultado final parece ser el mismo .

Write-Output envía los datos como un objeto a través de la canalización. En el ejemplo de Preguntas simplemente pasará una cadena.

write-host host depende del host. En la consola, write-host esencialmente está haciendo [console]::WriteLine . Vea esto para más información.

Otra diferencia entre Write-Host y Write-Output:

  • Write-Host muestra el mensaje en la pantalla, pero no lo escribe en el registro

  • Write-Output escribe un mensaje en el registro, pero no lo muestra en la pantalla.

Y Write-Host se considera dañino. Puede ver una explicación detallada en Write-Host Considerado Dañino .