Правильное использование 2> & 1 |тройник или |тройник с PowerShell - PullRequest
0 голосов
/ 24 октября 2018

Я хочу увидеть вывод команды в консоли и сохранить ее в файле, поэтому у меня есть две опции:

Когда я использую command | tee output.txt, то каким-то образом он не генерирует никакого выходного файла, кроме негов консоли работает как обычно.

Когда я использую command 2>&1 | tee output.txt, он генерирует прекрасный выходной файл, но текст в консоли отображается красным.enter image description here

Есть ли способ исправить первый вариант или позволить тексту отображаться как обычно во втором?Я использую Windows PowerShell (Windows 10), и программа, для которой я ее использую - это liquibase 3.5.5.только для случая, когда это важно.

1 Ответ

0 голосов
/ 25 октября 2018

В PowerShell перенаправление строк stderr из внешней программы в поток успеха PowerShell через 2>&1 оборачивает эти строки в [System.Management.Automation.ErrorRecord] экземплярах, поэтому вы видите красный вывод (без перенаправления строки stderr передано через консоль без окрашивания).

Простой обходной путь - явное преобразование этих объектов в строки, при котором выводятся исходные строки (синтаксис PSv3 +; встроенный псевдоним % дляForEach-Object используется для краткости):

... 2>&1 | % ToString | Tee-Object output.txt
...