Solución:
Unión stdout
y stderr
Los flujos de salida funcionan como comentó PetSerAl, aunque la sintaxis no es la más intuitiva.
La extraña sintaxis de 2>&1
significa que stderr
(flujo 2) se agregará al stdout
(secuencia 1). Como esto no es realmente lo que busca, intente adaptar el otro ejemplo de la página de MS a Powershell:
O puede redirigir la salida a un lugar y los errores a otro.
dir file.xxx> output.msg 2> output.err
Por lo tanto,
$ret = myCommand 2> errors.log
debe enviar errores en un archivo de registro y no errores en el $ret
variable.
Una explicación completa en el artículo de MSDN about_Redirection.
Un ejemplo mínimo, completo y verificable (stdout
a la tubería):
PS D:PShell> -1,5,0,2| ForEach-Object { 15/$_ } 2>"$env:temperr.txt" | Write-Output
-15
3
7.5
PS D:PShell> Get-Content "$env:temperr.txt"
Attempted to divide by zero.
At line:1 char:28
+ -1,5,0,2| ForEach-Object { 15/$_ } 2>"$env:temperr.txt" | Write-Outpu ...
+ ~~~~~
+ CategoryInfo : NotSpecified: (:) [], RuntimeException
+ FullyQualifiedErrorId : RuntimeException
PS D:PShell>
Otro ejemplo (stdout
al objeto):
PS D:PShell> $x = -1,5,0,2| ForEach-Object { 15/$_} 2>"$env:temperr.txt"
PS D:PShell> $x
-15
3
7.5
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)