213 votes

Quelle est la différence entre "Write-Host", "Write-Output", ou "[console]::WriteLine" ?

Il existe un certain nombre de façons différentes d'émettre des messages. Quelle est la différence effective entre l'envoi d'un message par le biais de Write-Host , Write-Output ou [console]::WriteLine ?

Je remarque aussi que si j'utilise :

write-host "count=" + $count

Le site + est inclus dans la sortie. Pourquoi cela ? L'expression ne devrait-elle pas être évaluée pour produire une seule chaîne concaténée avant d'être écrite ?

5 votes

Write-Output quand vous émettez des résultats. Write-Host lorsque vous émettez des informations de journalisation. N'utilisez jamais [console]::writeline() .

3 votes

@JohnL pourquoi ne devrions-nous jamais utiliser [console]::writeline() ?

4 votes

@Backwards_Dave Parce que vous avez Write-Host.... Ok, j'ai peut-être eu l'impression que cela montrait une nouvelle fenêtre de console (c'était il y a assez longtemps). Cela n'arrive pas, mais le fait est que ce n'est pas l'idiome powershell et qu'il n'y a rien que vous puissiez faire avec... [console]::writeline("hello world") que vous ne pouvez pas faire avec Write-Host "hello world" . Une autre réponse, meilleure et plus récente, est que write-host enveloppes write-information donc ses données sont placées dans un flux comme write-error pour que vous puissiez le capturer et l'utiliser ailleurs. [console]::writeline() ne le fait pas

0voto

Mike Twc Points 1306

En ce qui concerne [Console]::WriteLine() - vous devriez l'utiliser si vous avez l'intention d'utiliser des pipelines dans CMD (pas dans powershell). Disons que vous voulez que votre ps1 diffuse un grand nombre de données vers stdout, et qu'un autre utilitaire les consomme/transforme. Si vous utilisez Write-Host dans le script, ce sera beaucoup plus lent.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X