ฉันใช้คำสั่งนี้เพื่อดูผลลัพธ์ทั้งในคอนโซลและไฟล์:
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 นั้นไร้ประโยชน์อย่างสมบูรณ์