powershell - захватывает stdout и stderr в файлы, а также хранит их в терминале - PullRequest
0 голосов
/ 03 апреля 2020

У меня есть скрипт, который регистрирует через Write-Output и Write-Error и который вызывает много других скриптов и исполняемых файлов. Когда я запускаю его напрямую, я доволен тем, что вижу в терминале. Но я хотел бы дополнительно захватить два потока в два отдельных файла, сохраняя при этом поведение в терминале.

Это близко, но терминал не получает stderr:

& .\main.ps1 2> stderr.log | Tee-Object -FilePath stdout.log

Я подумал о том, чтобы запустить его как фоновую задачу, но я боюсь, что легко потеряю возможность Ctrl- C. Моя работа будет использоваться многими инженерами, поэтому я не хочу вводить неожиданное поведение.

1 Ответ

1 голос
/ 04 апреля 2020

Если вы можете согласиться с тем фактом, что оба потока попадают в один файл (в основном, как представление в терминале), это поможет:

& .\main.ps1 2>&1 | Tee-Object -FilePath stdout_and_stderr.log

Он перенаправляет stderr в stdout и направляет его к Tee-Object, как и раньше.

...