views:

938

answers:

3

In PowerShell how to capture error, warning, write-host output into a single file?

When I execute the external command/ write-warning/ write-error/ write-host I need all the information to be captured in a file.

when I redirect the write-error to a log file it will not show the same content as it's been displayed on the console. It will have some other information which I don't need.

Is it possible to prefix error with ERROR: , warning with WARN: in the log file?

A: 

Perhaps Start-Transcript and Stop-Transcript will do what you want. (PowerShell 2.0)

OldFart
Start-Transcript will capture those other streams but it doesn't capture any output from native commands (console exes). That's a fatal flaw for a lot of folks.
Keith Hill
I did say "Perhaps". :-)
OldFart
A: 

Have a look at PowerShell 2.0: A Configurable and Flexible Script Logger Module by Oisin. It should be possible to prefix the message with your custom string ('ERROR', 'WARN',...)

stej
+2  A: 

The simple way to do this is to use cmd.exe e.g.:

cmd /c powershell.exe -file <path_to_script> > script.log
Keith Hill

related questions