Cómo redirigir la salida de un PowerShell a un archivo durante su ejecución

Resuelto Martin asked hace 15 años • 10 respuestas

Tengo un script de PowerShell cuyo resultado me gustaría redirigir a un archivo. El problema es que no puedo cambiar la forma en que se llama este script. Entonces no puedo hacer:

 .\MyScript.ps1 > output.txt

¿Cómo redirijo la salida de un script de PowerShell durante su ejecución?

Martin avatar Aug 01 '09 05:08 Martin
Aceptado

Quizás Start-Transcriptfuncione para ti. Primero deténgalo si ya se está ejecutando, luego inícielo y deténgalo cuando haya terminado.

$ErrorActionPreference="Continuar silenciosamente"
Detener-Transcripción | fuera nulo
$ErrorActionPreference = "Continuar"
Inicio-Transcripción -ruta C:\output.txt -append
#Haz algunas cosas
Detener-Transcripción

También puede ejecutar esto mientras trabaja en cosas y guardar sus sesiones de línea de comando para referencia posterior.

Si desea suprimir por completo el error al intentar detener una transcripción que no se está transcribiendo, puede hacer esto:

$ErrorActionPreference="SilentlyContinue"
Stop-Transcript | out-null
$ErrorActionPreference = "Continue" # or "Stop"
Bratch avatar Jul 31 '2009 23:07 Bratch

Microsoft ha anunciado en el sitio web Connections de Powershell (15/02/2012 a las 16:40) que en la versión 3.0 han ampliado la redirección como solución a este problema.

In PowerShell 3.0, we've extended output redirection to include the following streams: 
 Pipeline (1) 
 Error    (2) 
 Warning  (3) 
 Verbose  (4) 
 Debug    (5)
 All      (*)

We still use the same operators
 >    Redirect to a file and replace contents
 >>   Redirect to a file and append to existing content
 >&1  Merge with pipeline output

Consulte el artículo de ayuda "about_Redirection" para obtener detalles y ejemplos.

help about_Redirection
Nathan Hartley avatar May 26 '2010 20:05 Nathan Hartley

Usar:

Write "Stuff to write" | Out-File Outputfile.txt -Append
Fred avatar Nov 05 '2012 17:11 Fred

Supongo que puedes modificarlo MyScript.ps1. Luego intenta cambiarlo así:

$(
    Here is your current script
) *>&1 > output.txt

Intenté esto con PowerShell 3. Puede usar todas las opciones de redireccionamiento como en la respuesta de Nathan Hartley .

mplwork avatar Apr 11 '2016 15:04 mplwork