Write-Output
パイプラインでデータを送信したいが、必ずしも画面に表示したくない場合に使用します。out-default
他に何も最初に使用しない場合、パイプラインは最終的にそれを書き込みます。
Write-Host
あなたが反対をしたいときに使用する必要があります。
[console]::WriteLine
本質的にWrite-Host
は裏で行われていることです。
このデモコードを実行し、結果を確認します。
function Test-Output {
Write-Output "Hello World"
}
function Test-Output2 {
Write-Host "Hello World" -foreground Green
}
function Receive-Output {
process { Write-Host $_ -foreground Yellow }
}
#Output piped to another function, not displayed in first.
Test-Output | Receive-Output
#Output not piped to 2nd function, only displayed in first.
Test-Output2 | Receive-Output
#Pipeline sends to Out-Default at the end.
Test-Output
PowerShellがのパラメーターリストをトークン化する前に連結を処理するWrite-Host
か、文字列補間を使用できるように、連結操作を括弧で囲む必要があります。
write-host ("count=" + $count)
# or
write-host "count=$count"
ところで、パイプラインがどのように機能するかを説明するジェフリー・スノーバーのこのビデオを見てください。PowerShellの学習を始めたとき、これがパイプラインのしくみについて最も役立つ説明であることがわかりました。
Write-Output
結果を出しているとき。Write-Host
ロギング情報を出力しているとき。決して使用しないでください[console]::writeline()
。