2010-07-21 8 views
9

¿Hay alguna manera de evitar que PowerShell elimine los colores de los mensajes de la consola cuando se utiliza tee-object?PowerShell elimina los colores de los mensajes de la consola al usar tee-object

Cuando corro sin camiseta a objetos consigo el error agradable y colores de mensajes PowerShell detallados así:

powershell.exe -noprofile -file $project_root/test_main.ps1 

with color http://i32.tinypic.com/250779w.jpg

Sin embargo, cuando estoy usando la te-objeto (b/c QUIERO registro a la consola & archivo), los colores de mensajes no se muestran en la consola (sé que el archivo no se mostrará) así:

powershell.exe -noprofile -file $project_root/test_main.ps1 | tee-object -FilePath $log 

no color http://i29.tinypic.com/bzpc2.jpg

Si powershell solo usa tee-object para dividir la salida en un archivo además de la consola, ¿por qué estoy perdiendo el formateo de la consola?

Respuesta

5

Tal vez puedas probar:

powershell.exe -noprofile -command { $path\test_main.ps1 | tee-object $log } 

Esto sucede porque esta parte se ejecuta en primer lugar:

powershell.exe -noprofile -file $project_root/test_main.ps1 

De tal manera que lo que te-objeto que ve es la salida de un EXE nativo. Y AFAICT, PowerShell no genera registros de error (o resalta) la salida de stderr de un EXE nativo (a menos que redirija la secuencia de error, por ejemplo, 2>err.log.

+0

Veo lo que dice, pero no puedo obtener ese comando método para trabajar. El primer error fue "Debe proporcionar una expresión de valor en el lado derecho del operador '/'." Intenté escapar sin suerte. Luego intenté hacer "$ path \ test_main" .ps1 | tee-object $ log "a $ command var, así que llamo a powershell.exe -noprofile -command {$ command} pero eso ni siquiera llama a la secuencia de comandos o genera un error cuando invoco una secuencia de comandos inexistente. Como puedes ver Keith, estoy trabajando g fuera de su publicación de blog "Elemento 14 eficaz de PowerShell: capturar todos los resultados de un script" para capturar y registrar todos los resultados :) – DetectiveEric

+0

Si ejecuta el comando desde PowerShell.exe debería funcionar (al menos lo hizo por mí en mi prueba) guión). Si lo está ejecutando en otro lugar además de PowerShell use '... -comando" y {$ path \ test_main.ps1 | tee-object $ log} "'. –

+0

RE "capturando todos los resultados de un script" - Me decepcionó cuando PowerShell 2.0 se envió sin abordar el problema del registro de scripts. :-( –

Cuestiones relacionadas