Saltar al contenido

Powershell redirige stderr y stdout a dos lugares diferentes

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)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *