Uso questo comando per vedere l'output sia nella console che in un file:
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
Non funziona come mi aspettavo e ho alcune domande:
- Come reindirizzare stderr anche a un file?
L'output funziona in modo molto strano. Per alcuni comandi c'è un enorme ritardo tra la stampa del testo e l'aggiornamento della console / del file. Per alcuni altri comandi l'output sembra aggiornato quando viene stampato il testo (eseguo i comandi senza tee e so cosa dovrebbe stampare). Questo ritardo rende questa maglietta quasi inutile: cosa succede se verrà stampato un errore critico, quindi devo interrompere il comando, ma non vedrò nulla fino a quando non è troppo tardi?
Per alcuni comandi l'output viene stampato solo dopo aver eseguito il comando completo.
- Inoltre, anche se il comando richiede l'input dell'utente, l'output della console / del file è vuoto! Per quel comando so cosa si aspetta e stampa ciecamente il testo necessario e ha funzionato, ma per gli altri - senza output aspetterò che accada all'infinito mentre il comando attenderà il mio input!
Ci sono soluzioni per questi problemi? In caso contrario, questa cosa tee in PowerShell è completamente inutile.