我希望得到一些帮助,将PowerShell脚本放在一起,启动两个进程(在我的情况下,两个服务器监视文件更改并报告,连续向stdout写入内容)并将它们各自的输出混合到一个终端窗口中?
我对写入文件不感兴趣。我想在同一个PowerShell终端窗口中监视两个交织在一起的输出流。我知道,在某些方面会有未完成的"未完成的"来自一个进程的块与其他进程交织在一起等等,但我不介意。
将这两个脚本视为输入:
left.ps1
echo 0
Start-Sleep 1
echo 1
Start-Sleep 2
echo 2
Start-Sleep 3
echo 3
Start-Sleep 4
echo 4
Start-Sleep 5
echo "done numbers"
right.ps1
echo A
Start-Sleep 1
echo B
Start-Sleep 2
echo C
Start-Sleep 3
echo D
Start-Sleep 4
echo E
Start-Sleep 5
echo "done letters"
所需的输出是:
0
A
1
B
2
C
3
D
4
E
done numbers
done letters
如果两个已启动的进程都死亡,并且在^C
上杀死已启动的进程,那么进程就会很好,但这两个都不是必需的。
我正在使用Windows,因此只支持Windows的答案很好。如果可能,我不想使用tmux
或screen
。
(我对Cygwin不感兴趣,而且我不想要两列,而是混合使用stdouts。)
WSL解决方案也很有趣。
答案 0 :(得分:3)
您可以将Start-Process
cmdlet与-NoNewWindow
开关一起使用,以启动连接到同一控制台窗口的新独立控制台应用程序:
Start-Process -NoNewWindow process1 arguments1
Start-Process -NoNewWindow process2 arguments2
如果您想以这种方式启动PowerShell脚本,那么您需要为它启动新的PowerShell流程:
Start-Process -NoNewWindow powershell '-File script1.ps1'
Start-Process -NoNewWindow powershell '-File script2.ps1'