PowerShell ISE spült nicht stdout

1348
lapis

Ich habe ein kleines Problem, wenn Sie ein Konsolenprogramm in PowerShell ISE ausführen: Wenn das Programm eine Zeile in Teilen mit Flush schreibt, zeigt PowerShell die Zeile erst an, wenn das Programm ein Zeilenende schreibt. Zum Beispiel macht das Programm so etwas (C ++):

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

PowerShell ISE zeigt nur die gesamte Zeile an, wenn dieser Codeabschnitt abgeschlossen ist. Bei Nicht-ISE-PowerShell ist dies nicht der Fall. Die Linie wird erwartungsgemäß in Teilen gedruckt.
Die Frage ist also: Kann ich PowerShell ISE irgendwie dazu veranlassen, den internen Puffer zu deaktivieren und die Standardausgabe des Programms direkt auszudrucken?

1

1 Antwort auf die Frage

0
lapis

Scheint, als ob dies nicht möglich ist, zumindest ohne es durch Reflexion zu Hacking (wie mir gesagt wurde, auf dem Microsoft - Forum).
Ich denke, ich sollte einfach ein anderes Tool als fortgeschrittene Alternative zu cmd verwenden, wie Console oder ConEmu (das auch eine PowerShell-Konsole in seiner Benutzeroberfläche ausführen kann).