Я использую эту команду, чтобы увидеть вывод как в консоли, так и в файле:
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 также в файл?
Вывод работает очень странно. Для некоторых команд существует огромная задержка между печатным текстом и обновлением консоли / файла. Для некоторых других команд вывод выводится обновленным при печати текста (я запускаю команды без тройника и знаю, что он должен печатать). Эта задержка делает этот тройник почти бесполезным - что, если будет напечатана какая-то критическая ошибка, поэтому мне нужно остановить команду, но я ничего не увижу, пока не станет слишком поздно?
Для некоторых команд вывод выводится только после полной команды.
- Более того, даже если команда запрашивает ввод пользователя, вывод консоли / файла будет пустым! Для этой команды я знаю, чего она ожидает, и слепо печатать необходимый текст, и это сработало, но для других - без вывода я буду ждать, пока что-то произойдет бесконечно, пока команда будет ждать моего ввода!
Есть ли решения для этих проблем? Если нет, то эта штука в PowerShell совершенно бесполезна.