Линзы не появляются в приборной панели

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)

BTW - Смотрите это видео Джеффри Сновера, объясняя, как работает трубопровод. Когда я начал изучать PowerShell, я нашел это наиболее полезным объяснением того, как работает конвейер.

1
задан OrangeTux 9 May 2012 в 19:19
поделиться