Tôi sử dụng lệnh này để xem đầu ra cả trong giao diện điều khiển và tệp:
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
Nó hoạt động không tốt như tôi mong đợi và tôi có một số câu hỏi:
- Làm thế nào để tôi chuyển hướng stderr cũng đến một tập tin?
Đầu ra hoạt động rất lạ. Đối với một số lệnh, có một độ trễ lớn giữa văn bản được in và bảng điều khiển / tệp được cập nhật. Đối với một số lệnh khác, đầu ra dường như được cập nhật khi văn bản được in (Tôi chạy các lệnh không có tee và tôi biết nó nên in gì). Sự chậm trễ này làm cho tee này gần như vô dụng - điều gì sẽ xảy ra nếu một số lỗi nghiêm trọng sẽ được in vì vậy tôi cần dừng lệnh, nhưng tôi sẽ không thấy gì cho đến khi quá muộn?
Đối với một số lệnh đầu ra chỉ được in sau khi hoàn thành lệnh đầy đủ.
- Hơn nữa, ngay cả khi lệnh yêu cầu đầu vào của người dùng, đầu ra của bàn điều khiển / tệp trống! Đối với lệnh đó, tôi biết những gì nó mong đợi và in một cách mù quáng văn bản cần thiết và nó đã hoạt động, nhưng đối với những người khác - không có đầu ra, tôi sẽ chờ điều gì đó xảy ra vô tận trong khi lệnh sẽ chờ đầu vào của tôi!
Có giải pháp cho những vấn đề này? Nếu không, điều tee này trong PowerShell là hoàn toàn vô dụng.