PowerShell и тройник
Я использую эту команду, чтобы увидеть вывод как в консоли, так и в файле:
powershell -command "my_command_1 | tee ('logs{0}.log' -f (Get-Date -format 'yyyy.MM.dd-HH.mm'))"
powershell -command "my_command_2 | tee ('logs{0}.log' -f (Get-Date -format 'yyyy.MM.dd-HH.mm'))"
# etc
Это работает не так хорошо, как я ожидал, и у меня есть несколько вопросов:
- Как перенаправить stderr также в файл?
-
Вывод работает очень странно. Для некоторых команд существует огромная задержка между печатанием текста и обновлением консоли/файла. Для некоторых других команд вывод, похоже, обновляется при печати текста (я запускаю команды без tee и знаю, что он должен печать). Эта задержка делает этот тройник почти бесполезным - что, если будет напечатана какая-то критическая ошибка, поэтому мне нужно остановить команду, но я ничего не увижу, пока не станет слишком поздно?
Для некоторых команд вывод выводится только после выполнения полной команды.
- Кроме того, даже если команда запрашивает ввод пользователя, вывод консоли/файла пуст! Для этой команды я знаю, чего она ожидает, и слепо печатаю необходимый текст, и это сработало, но для других - без вывода я буду ждать чего-то, чтобы происходит бесконечно, пока команда будет ждать моего ввода!
Существуют ли решения для этих проблем? Если нет, то эта штука в PowerShell совершенно бесполезна.