В чем разница между Write-Host и Write-Output в PowerShell?
Как...
Write-Host "Hello World ";
Write-Output "Hello World";
В чем разница между Write-Host и Write-Output в PowerShell?
Как...
Write-Host "Hello World ";
Write-Output "Hello World";
В двух словах, Write-Host
записывает на консоль. Подумайте об этом как о MsgBox в VBScript. Write-Output
, с другой стороны, записывается в конвейер, поэтому следующая команда может принять его как свой вход. Вы не обязаны использовать Write-Output
для записи объектов, поскольку Write-Output
неявно вызывается для вас.
PS> Get-Service
будет таким же, как:
PS> Get-Service | Write-Output
Write-Output отправляет вывод в конвейер. Оттуда его можно передать в другой командлет или присвоить переменной. Write-Host отправляет его непосредственно на консоль.
$a = 'Testing Write-OutPut' | Write-Output
$b = 'Testing Write-Host' | Write-Host
Get-Variable a,b
Выходы:
Testing Write-Host
Name Value
---- -----
a Testing Write-OutPut
b
Если вы не сообщите Powershell, что делать с выходом в конвейер, назначив его переменной или передав ее в команду anoher, тогда она будет отправлена по умолчанию, что обычно является консолью, поэтому конечный результат выглядит одинаково.
Write-Output
отправляет данные в виде объекта по конвейеру. В примере "Вопросы" он просто передаст строку.
write-host
зависит от хоста. В консоли write-host
по существу выполняется [console]::WriteLine
.
Подробнее см. .
Другое отличие между Write-Host и Write-Output:
Write-Host отображает сообщение на экране, но не записывает его в журнал
Write-Output записывает сообщение в журнал, но оно не отображает его на экране.
И Write-Host считается вредным. Вы можете увидеть подробное объяснение в Write-Host считается вредным.