Я новичок в powershell, и, похоже, у меня проблемы с концепцией труб. Насколько я понимаю:
Write-Host
пишет "на консоли", но не может быть повторно использован / захвачен из других скриптовWrite-Output
помещает что-то в трубу. Если содержимое канала не используется в другом месте, оно выводится на консоль. Вызывающий скрипт может использовать вывод.
Я знаю, что практически во всех языках сценариев вы можете писать в консоль из любого места, используя ее, вызывая сценарии и не влияя на возвращаемое значение функции.
Так:
- Какая польза от этого? На данный момент дизайн выглядит элегантно, но не очень практично.
- Как я могу записать в вывод скрипта из функции, не влияя на ее возвращаемое значение (нет, я не могу использовать
[Write-Host][1]
) Как я могу записать в вывод сценария из обратного вызова / события, как в
$ect = Register-ObjectEvent -InputObject $ps -Action { Write-Somewhere $EventArgs.Data } -EventName 'ErrorDataReceived'
Справочная информация: скрипт вызывается из файла оболочки, вызывается из файла оболочки, который вызывается из Jenkins. Write-Output правильно зарегистрирован, но я не могу использовать его везде. Я хочу избежать сброса текста во временный файл и прочитать его в конце, чтобы сэкономить время.