Usando o aplicativo de linha de comando nativa do comando powershell e captura STDERR

5

Estou usando uma porta de uma ferramenta cygwin no Windows que grava mensagens de status normais em STRERR. Isso produz saída feia quando executado a partir do 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

Existe uma maneira melhor?

P.S. Pretendo postar uma solução que encontrei e compará-la com as respostas de outras pessoas.

    
por yzorg 22.11.2010 / 20:20

2 respostas

1

Esta é uma solução que encontrei. Por favor, poste sua resposta se você tiver uma resposta melhor (isso é destinado apenas para utilitários de linha de comando que enviam mensagens de status para STDERR em vez do fluxo de saída normal):

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 ...
    
por 22.11.2010 / 20:22
1

Não , infelizmente. Essa feiura é um recurso de design do Powershell :( Se um aplicativo é impresso no erro padrão (e qualquer outra coisa está escutando), o Powershell envolve cada linha em um objeto 'NativeCommandError' ofuscante. Consulte link para mais detalhes

Você pode silenciar os objetos feios, mas também perderá o conteúdo útil.

    
por 16.08.2012 / 13:48