Tengo un script de PowerShell para el que me gustaría redirigir la salida 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?
powershell
scripting
stdout
Martín
fuente
fuente
Microsoft ha anunciado en el sitio web de Powershell Connections (15/02/2012 a las 4:40 p.m.) que en la versión 3.0 han extendido la redirección como una solución a este problema.
Consulte el artículo de ayuda "about_Redirection" para obtener detalles y ejemplos.
fuente
Utilizar:
fuente
Supongo que puedes modificarlo
MyScript.ps1
. Luego intenta cambiarlo así:Acabo de probar esto con PowerShell 3. Puede usar todas las opciones de redireccionamiento como en la respuesta de Nathan Hartley .
fuente
*>&1 | Out-File $log -Encoding ascii -Append -Width 132
pero Powershell es realmente feo si necesita controlar con precisión la salida.Una posible solución, si su situación lo permite:
Cree un nuevo MyScript.ps1 que se vea así:
. \ TheRealMyScript.ps1> output.txt
fuente
fuente
Es posible que desee echar un vistazo al cmdlet Tee-Object . Puede canalizar la salida a Tee y escribirá en la tubería y también en un archivo
fuente
Si desea una redirección directa de todos los resultados a un archivo, intente usar
*>>
:Como se trata de una redirección directa al archivo, no se enviará a la consola (a menudo útil). Si desea la salida de la consola, combine toda la salida con
*&>1
y luego canalice conTee-Object
:Creo que estas técnicas son compatibles con PowerShell 3.0 o posterior; Estoy probando en PowerShell 5.0.
fuente
Si desea hacerlo desde la línea de comandos y no está integrado en el script, use:
fuente
Para incrustar esto en su script, puede hacerlo así:
Eso debería hacer el truco.
fuente