Siempre se puede redirigir la salida de un archivo EXE a un archivo como tal (incluso desde cmd.exe):
powershell c:\test.ps1 > c:\test.log
Dentro de PowerShell, también puede redirigir los comandos individuales para presentar pero en esos casos es probable que desee añadir al archivo de registro en lugar de sobrescribir por ejemplo:
$logFile = 'c:\temp\test.log'
"Executing script $($MyInvocation.MyCommand.Path)" > $logFile
foreach ($proc in Get-Process) {
$proc.Name >> $logFile
}
"Another log message here" >> $logFile
Como puede ver, hacer la redirección dentro del script es un poco molesto porque tiene que hacer muchos redireccionamientos para archivar. OTOH, si solo quieres redirigir parte de la salida a un archivo, entonces tienes más control de esta manera. Otra opción es usar Write-Host
para generar información en la consola destinada a alguien que observa los resultados de la ejecución del script. Tenga en cuenta que la salida Write-Host
no se puede redirigir a un archivo.
Este es un ejemplo ejecutado desde CMD.exe
C:\Temp>type test.ps1
$OFS = ', '
"Output from $($MyInvocation.MyCommand.Path). Args are: $args"
C:\Temp>powershell.exe -file test.ps1 1 2 a b > test.log
C:\Temp>type test.log
Setting environment for using Microsoft Visual Studio 2008 Beta2 x64 tools.
Output from C:\Temp\test.ps1. Args are: 1, 2, a, b
Así que si estoy teniendo un argumento al script de PowerShell, puedo simplemente do: powershell c: \ test.ps1 c: \ log.log> c: \ test.log donde log.log es el argumento? – ssn
Sí, pero intente utilizar el parámetro '-File', p. 'powershell -file c: \ test.ps1 c: \ log.log> c: \ test.log' –
si intento usar el parámetro de archivo (o sin archivo) en el archivo por lotes obtengo la siguiente línea que se ejecuta en el comando línea: powershell -file c: \ test.ps1 c: \ log.log 1> c: \ test.log No entiendo cómo aparece ese "1" ..... Y supongo que todo el texto después de que el nombre del script se toma como el nombre del archivo de entrada y, por lo tanto, el resultado no es el esperado. Y este comportamiento es el mismo si uso "-file" o no. – ssn