My-Command 2>&1 | Tee-Object 'myfile.log'
, СмGet-Help about_Redirection
.- Вы должны ловить ошибки, не полагаясь на Ctrl+ C. См
Get-Help about_Try_Catch_Finally
. Эта команда запускает внешнюю программу или скрипт? - Насколько я понимаю, обычно строковые объекты не отправляются по конвейеру до тех пор, пока не будет достигнут символ конца строки. Причина проста: если бы этого не было, частичные (читай: неполные) строки пошли бы по трубе.
Tee
может нормально обрабатывать частичные строки, но другие командлеты вроде быForEach-Object
илиSelect-Object
нет. Обратите внимание, что уGet-Content
него есть специальный переключатель,-ReadCount
который несколько отменяет это поведение, и он будет серьезно портитьSelect-Object -Skip/-First/-Last/-Unique
команду дальше по трубе.
Вполне возможно, что внешние программы, которые вы запускаете, не будут подчиняться соглашениям, которые ожидает PowerShell. Tee
например, правильно называется Tee-Object
, что должно рассказать вам о тех вещах, с которыми хорошо работать. В этом случае вы можете продолжить работу tee.exe
с GNU Win32 Utils или MSYS, которые предназначены для немедленной пересылки контента.