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 avecWrite-Host "hello world"
. Une autre réponse, meilleure et plus récente, est quewrite-host
enveloppeswrite-information
donc ses données sont placées dans un flux commewrite-error
pour que vous puissiez le capturer et l'utiliser ailleurs.[console]::writeline()
ne le fait pas