¿Cuál es la diferencia entre Write-Host y Write-Output en PowerShell?
Me gusta...
Write-Host "Hello World ";
Write-Output "Hello World";
windows
powershell
daniyalahmad
fuente
fuente
Write-Output envía la salida a la canalización. Desde allí, se puede canalizar a otro cmdlet o asignar 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
Salidas:
Si no le dice a Powershell qué hacer con la salida de la canalización asignándola a una variable o canalizándola a otro comando, entonces se envía a la salida predeterminada, que normalmente es la consola, por lo que el resultado final parece el mismo. .
fuente
Write-Output
envía los datos como un objeto a través de la canalización. En el ejemplo de Preguntas, solo pasará una cadena.write-host
depende del anfitrión. En la consolawrite-host
esencialmente está haciendo[console]::WriteLine
. Vea esto para más información.fuente
Write-Ouput
envía objetos. Esta vez fue una cadena, pero en general enviará objetos, y normalmente no es necesario usarla, ya que es la forma predeterminada de generar resultados / datos :)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 Considered Dañino .
fuente
Write-Output
muestra el mensaje en la pantalla, si está ejecutando el script usted mismo. Así que no estoy seguro de lo que quiere decir con "Write-Output escribe un mensaje en el registro, pero no lo muestra en la pantalla". ?Puede comprender la diferencia entre los dos cmds con el siguiente ejemplo:
Host de escritura "msgtxt" | Get-Service Al ejecutar arriba, obtendrá la salida como "msgtxt"
Salida de escritura "msgtxt" | Get-Service Al ejecutar arriba, recibirá un error ya que msgtxt no es el nombre de ningún servicio (en condiciones ideales) (ya que lo está escribiendo en una canalización y se pasa como entrada a Get-Service)
fuente