PowerShell ISE не сбрасывает стандартный вывод

1198
lapis

У меня небольшая проблема при запуске консольной программы в PowerShell ISE: когда программа записывает строку порциями, используя flush, PowerShell не будет показывать строку, пока программа не запишет конец строки. Например, программа делает что-то вроде этого (C ++):

std::cout << "Doing something time-consuming..." << std::flush; // Do something for some time std::cout << " done in " << x << " seconds" << std::endl; 

А PowerShell ISE покажет всю строку только после завершения этого раздела кода. С PowerShell без ISE этого не происходит, строка печатается порциями, как и ожидалось.
Таким образом, вопрос заключается в следующем: можно ли как-нибудь заставить PowerShell ISE отключить свой внутренний буфер и напрямую распечатать стандартный вывод программы?

1

1 ответ на вопрос

0
lapis

Похоже, что это невозможно, по крайней мере, без взлома через Reflection (как мне сказали на форуме Microsoft).
Я думаю, что мне просто нужно использовать другой инструмент в качестве расширенной альтернативы cmd, например, Console или ConEmu (который также может запускать консоль PowerShell внутри своего интерфейса).