Workaround for Start-Transcript on native processes


Recently, we came across an interesting bug that had been around for awhile ( If you do the following:


If you look at the transcript, you’ll see that the output of ipconfig was not captured.

Why is this happening?

PowerShell recognizes that ipconfig is a native console application. Since many of these applications do direct writes to the console buffer (i.e., etc.), we don’t direct the output handles. Because of that, we can’t capture their output directly. This renders the transcription framework ineffective because the Out-Default cmdlet is unable to capture anything from ipconfig.

How can we work around it?

The workaround is actually quite simple. All you have to do is to pipe the output from ipconfig.exe to Out-Default.

ipconfig | Out-Default

Tianjie (James) Wei [MSFT]
Software Design Engineer
Windows PowerShell Team