Cómo redirigir la salida de un PowerShell a un archivo durante su ejecución
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?
Quizás Start-Transcript
funcione 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"
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
Usar:
Write "Stuff to write" | Out-File Outputfile.txt -Append
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 .