echo
- это псевдоним для Write-Output
, который отправляет объекты следующей команде в конвейере. Если все, что вы хотите сделать, это отобразить текст на консоли, вы можете сделать:
Write-Host "Hi" -NoNewLine
Помните, что это не тот же командлет, что и echo | Write-Output.
Основная задача
Write-Output
- отправлять объекты следующей команде в конвейере, где основная цель Write-Host
состоит в отображении текста на консоли. Причина, по которой вы видите текст на консоли, используя Write-Output
, заключается в том, что механизм PowerShell отправляет все в Out-Default
в конце конвейера, который отправляет входящие объекты PowerShell в механизм форматирования текста.
Вот пример:
Write-Host "hi" | Get-Member
Это приведет к ошибке, потому что Write-Host
просто записывает текст в консоль и не передает строку следующей команде в конвейере.
Write-Output "hi" | Get-Member
Это отобразит свойства и методы System.String
, поскольку Write-Output
отправляет объект string
следующему объекту в конвейере.