Dieses Problem wird bei Stack Overflow als die Tatsache erklärt, dass die PowerShell Tee-Object
den Ausgabestrom nicht leert, sondern nur darauf wartet, dass die Quelle dies tut, sodass Sie die Ausgabe am Ende der Operation erhalten. Dies ist beabsichtigt.
Die in der Antwort vorgeschlagene Problemumgehung bestand in der Verwendung dieses Codes:
./program | ForEach-Object { Write-Host $_ $_ } | Set-Content program.log
Eine alternative Formulierung, um zu versuchen, ob die obige nicht funktioniert hat, ist:
./program | ForEach-Object { [Console]::WriteLine($_) [Console]::Out.Flush() $_ } | Set-Content program.log
Der Befehl würde also so aussehen:
PowerShell -ExecutionPolicy Unrestricted "startmyserver | ForEach-Object { Write-Host $_; $_} | Set-Content server.log"
In meinen bescheidenen Tests wurde die Ausgabe zu schnell generiert, um zu sehen, ob dies wie von Ihnen angegeben funktioniert.