web-dev-qa-db-fra.com

Différence PowerShell entre Write-Host et Write-Output?

Quelle est la différence entre Write-Host et Write-Output dans PowerShell?

Comme...

Write-Host "Hello World ";

Write-Output "Hello World";
66
daniyalahmad

En un mot, Write-Host écrit sur la console elle-même. Considérez-le comme une MsgBox dans VBScript . Write-Output, d’autre part, écrit dans le pipeline afin que la commande suivante puisse l’accepter comme entrée. Vous n'êtes pas obligé d'utiliser Write-Output pour écrire des objets, comme Write-Output est appelé implicitement pour vous.

PS> Get-Service

serait la même chose que:

PS> Get-Service | Write-Output
55
Shay Levy

Write-Output envoie la sortie au pipeline. De là, il peut être redirigé vers une autre applet de commande ou attribué à une variable. Write-Host l'envoie directement à la console.

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

Get-Variable a,b

Les sorties:

Testing Write-Host

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

Si vous ne dites pas à Powershell quoi faire avec la sortie dans le pipeline en l'attribuant à une variable ou en la canalisant vers une autre commande, elle est envoyée à out-default, qui est normalement la console, de sorte que le résultat final est identique. .

20
mjolinor

Write-Output envoie les données sous forme d'objet via le pipeline. Dans l'exemple Questions, il suffit de passer une chaîne.

write-Host dépend de l'hôte. Dans la console write-Host fait essentiellement [console]::WriteLine. Voir this pour plus d'informations.

7
Chad Carisch

Une autre différence entre Write-Host et Write-Output:

  • Write-Host affiche le message à l'écran, mais ne l'écrit pas dans le journal.

  • Write-Output écrit un message dans le journal, mais ne l'affiche pas à l'écran.

Et Write-Host est considéré comme nuisible. Vous pouvez voir une explication détaillée dans écriture hostile considérée comme nuisible.

5
Summer