В чем разница между Write-Host и Write-Output в PowerShell?
Подобно...
Write-Host "Hello World ";
Write-Output "Hello World";
windows
powershell
Daniyalahmad
источник
источник
Write-Output отправляет вывод в конвейер. Оттуда он может быть передан другому командлету или назначен переменной. Write-Host отправляет его прямо на консоль.
$a = 'Testing Write-OutPut' | Write-Output $b = 'Testing Write-Host' | Write-Host Get-Variable a,b
Выходы:
Если вы не укажете Powershell, что делать с выводом в конвейер, назначив его переменной или связав его с другой командой, тогда он будет отправлен в исходное значение по умолчанию, которое обычно является консолью, поэтому конечный результат выглядит таким же .
источник
Write-Output
отправляет данные как объект по конвейеру. В примере с вопросами он просто передает строку.write-host
зависит от хоста. В консолиwrite-host
по сути дела[console]::WriteLine
. См. Это для получения дополнительной информации.источник
Write-Ouput
отправляет объекты. На этот раз это была строка, но, как правило, она отправляет объекты, и обычно в ней нет необходимости, поскольку это способ по умолчанию для вывода результатов / данных :)Еще одно различие между Write-Host и Write-Output:
Write-Host отображает сообщение на экране, но не записывает его в журнал
Write-Output записывает сообщение в журнал, но не отображает его на экране.
А Write-Host считается вредоносным. Вы можете увидеть подробное объяснение в разделе Запись хоста считается опасным .
источник
Write-Output
выводит сообщение на экран, если вы запускаете скрипт самостоятельно. Так что я не уверен, что вы имеете в виду под «Write-Output записывает сообщение в журнал, но не отображает его на экране». ?Вы можете понять разницу между двумя cmds на примере ниже:
Запись хоста "msgtxt" | Get-Service При запуске выше вы получите вывод как "msgtxt"
Запись-вывод "msgtxt" | Get-Service При запуске, описанном выше, вы получите сообщение об ошибке, поскольку msgtxt не является именем какой-либо службы (в идеальном состоянии) (поскольку вы записываете его в конвейер, и он передается в качестве входных данных в Get-Service)
источник