Использование PowerShell вызов собственного приложения командной строки и захват STDERR

Я использую порт инструмента cygwin в Windows, который записывает обычные сообщения о состоянии в STRERR. Это приводит к некрасивым вывод при запуске из PowerShell:

PS> dos2unix.exe -n StartApp.sh StartApp_fixed.sh
dos2unix.exe : dos2unix: converting file StartApp.sh to file StartApp_fixed.sh in UNIX format ...
At line:1 char:13
+ dos2unix.exe <<<<  -n StartApp.sh StartApp_fixed.sh
    + CategoryInfo          : NotSpecified: (dos2unix: conve...UNIX format ...:String) [], RemoteException
    + FullyQualifiedErrorId : NativeCommandError

есть ли лучший способ?

P. S. Я намерен постить одно решение я нашел и сравнивать ответы с другими.

20
задан yzorg
01.12.2022 5:21 Количество просмотров материала 3610
Распечатать страницу

2 ответа

нет, увы. Это уродство является особенностью Powershell по дизайну: (если приложение выводит на печать стандартную ошибку (и все остальное прослушивается), Powershell переносит каждую строку в запутывающий объект NativeCommandError. См https://stackoverflow.com/questions/1394084/ignoring-an-errorlevel-0-in-windows-powershell более подробно

вы можете заставить замолчать уродливые объекты, но тогда вы потеряете полезное содержание тоже.

1
отвечен Colonel Panic 2022-12-02 13:09

это одно из решений, которые я нашел. Пожалуйста, оставьте свой ответ, если у вас есть лучший ответ (это предназначено только для утилит командной строки, которые отправляют сообщения о состоянии в STDERR вместо обычного потока вывода):

PS> $output = dos2unix.exe -n StartApp.sh StartApp_fixed.sh 2>&1
$output.CategoryInfo.TargetName | Out-Default
dos2unix: converting file StartApp.sh to file StartApp_fixed.sh in UNIX format ...
1
отвечен yzorg 2022-12-02 15:26

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх