Я використовую цю команду, щоб побачити вихід і в консолі, і у файлі:
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 абсолютно марна.