我有一个脚本,该脚本通过Write-Output和Write-Error进行记录,并调用许多其他脚本和可执行文件。当我直接运行它时,我对在终端中看到的内容感到满意。但是我想另外捕获两个流到两个单独的文件,同时保持终端的行为。
这很接近,但是终端没有显示stderr:
& .\main.ps1 2> stderr.log | Tee-Object -FilePath stdout.log
我已经考虑过将其作为后台任务运行,但是我担心我会很容易失去Ctrl-C的功能。我的工作将被许多工程师使用,所以我不想介绍意外的行为。
如果可以忍受这样的事实,两个流都集中在一个文件中(基本上像终端中的视图一样,这将达到目的:
& .\main.ps1 2>&1 | Tee-Object -FilePath stdout_and_stderr.log
像以前一样将stderr
重定向到stdout
并将其通过管道传输到Tee-Object
。