Console output copypaste

How to output console or PowerShell transcript to a file in Windows

This post was most recently updated on April 28th, 2019.

Reading Time: 3 minutes.

Every now and then, you run into a situation, where you’ll need to somehow dump the console output (or transcript) of running a console application. I’m actually going to argue it happens a lot more often than one would think – in my case, any time a customer requires a webjob or a function, that one would normally deploy to Azure, being ran on the servers of the customer. This post describes how to do that.

Problem

Something breaks or the app crashes, and the error is logged to event log… But just the error, not the whole transcript. You’d like to get it all, to figure out what’s actually going on, but event log is not the way to go.

Or, maybe you’re investigating an error that happened to someone else, but only get screenshots of console or event log errors, whereas you’d want to get all the possible information about the problem instead.

What to do?

Solution: redirection operator > to the rescue!

It’s luckily pretty easy. There are multiple ways to pipe, dump, redirect, log, mirror or just save the output to almost any imaginable target medium, but since I hate always googling for them (and for the life of me, I can’t seem to remember it by heart), I’m documenting my preferred way here.

How to redirect output to file in Powershell?

You can direct the whole console output (and hence the whole PowerShell transcript for your executable) to a text file by doing something like this:

executable.exe > output.txt 2>&1

OR

executable.exe *>&1 > output.txt

This method just writes everything from the console window to a file – as simple as that!

In these examples, the following parameters affect the outcome:

ElementDescription
Redirection operator: >Writes the command output to a file or a device, such as a printer, instead of the Command Prompt window.
2>&1These parameters cause this command to first redirect stdout (Standard Output Stream) to the output file, and then redirects stderr (Standard Error Stream) there as well.

Okay – so now it’s finally documented. Maybe I won’t have to google it the next time :)

Wait… But how is this better than copypasting from a console window?

If you’re not running your application unattended, you could just run the application and copy-paste from the window to your preferred location. That’s nice and easy! So what makes this method better?

A couple of things come to mind:

Why dumping console output to a file is better than just copypasting

  1. You can get the transcripts unattended. You don’t have to do anything yourself.
  2. This way, You won’t mess the copying up by selecting from areas of the output.
    • I don’t know about you, but I often mess up the copy-pasting from a console or PowerShell window. This method makes that impossible.
  3. This is the easiest way I’ve found to ask other people for the whole output/transcript of a console application run.
    • That’s really useful, because when I’m debugging, I really want the whole log, and not just the last few lines of red text!

Further thoughts

For more info and options about the output scenarios, see this Stack Overflow thread. If you want to read more about stdout and stderr, check this out.

However, a far more advanced scenario would be to save the output directly to Application Insights or something similar. For a lot of cases, this would be like shooting a fly with a bazooka, but for larger deployments, why not. Maybe worth a blog post later! :)

Antti K. Koskela

Antti Koskela is a proud digital native nomadic millenial full stack developer (is that enough funny buzzwords? That's definitely enough funny buzzwords!), who works as a Solutions Architect for Valo Intranet, the product that will make you fall in love with your intranet. Working with the global partner network, he's responsible for the success of Valo deployments happening all around the world.

He's been a developer from 2004 (starting with PHP and Java), and he's been bending and twisting SharePoint into different shapes since MOSS. Nowadays he's not only working on SharePoint, but also on .NET projects, Azure, Office 365 and a lot of other stuff.

This is his personal professional (e.g. professional, but definitely personal) blog.

2
Leave a Reply

avatar
5000
1 Comment threads
1 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
2 Comment authors
Antti K. KoskelaJoel Recent comment authors
  Subscribe  
newest oldest most voted
Notify of
Joel
Guest

Actually, in PowerShell, one can indeed merely copypaste the output of a command in a console window. You can pipe in to clip or Set-Clipboard.

e.g.

Get-ChildItem | Set-Clipboard

You can also do it from cmd console by piping into clip.

dir | clip