У меня есть небольшая путаница по поводу различных способов печати (эха) на консоли. Я видел, что есть несколько способов записи вывода на консоль, например:
Write-Host "Hello world1"
"Hello World2"
Out-Host -InputObject "Hello World3"
Все три способа будут печатать на консоли. Средний как-то проще, менее многословен и проще в использовании. Я также обнаружил, что когда вы пишете такую функцию, как:
function GetValues()
{
"1"
"2"
}
Он по-прежнему возвращает две строки в конвейере:
И я все еще могу распечатать значения:
foreach ($s in GetValues)
{
Write-Host "s: " $s
}
Я обнаружил, что использование только строки в кавычках не всегда отображается на пользовательских хостах, и что мне приходилось использовать Write-Host для получения значений для печати на пользовательских хостах.
Почему-то меня это сбивает с толку. Является ли "Print something"
должен быть псевдонимом Write-Host
или что такое намерение?
источник
Средний пишет в конвейер.
Write-Host
иOut-Host
пишет в консоль. «echo» - это псевдоним, дляWrite-Output
которого также выполняется запись в конвейер. Наилучший способ записи в консоль - использоватьWrite-Host
командлет.Когда объект записывается в конвейер, он может быть использован другими командами в цепочке. Например:
"hello world" | Do-Something
но это не сработает, так как
Write-Host
запись выполняется в консоль, а не в конвейер (Do-Something не получит строку):Write-Host "hello world" | Do-Something
источник