Эта проблема в переполнении стека объясняется тем фактом, что PowerShell Tee-Object
не сбрасывает поток вывода, а только ждет, пока источник сделает это, поэтому вы получите вывод в конце операции. Это по замыслу.
Обходной путь, предложенный в ответе, заключался в использовании этого кода:
./program | ForEach-Object { Write-Host $_ $_ } | Set-Content program.log
Альтернативная формулировка, чтобы попробовать, если вышеупомянутое не сработало:
./program | ForEach-Object { [Console]::WriteLine($_) [Console]::Out.Flush() $_ } | Set-Content program.log
Таким образом, команда будет выглядеть так:
PowerShell -ExecutionPolicy Unrestricted "startmyserver | ForEach-Object { Write-Host $_; $_} | Set-Content server.log"
В моем скромном тестировании выходные данные генерировались слишком быстро, чтобы я мог увидеть, работает ли это так, как вы указали.