Making a Debug Log

Got a great question from an attendee at last week's Windows Connections conference. We were discussing how to use the Write-Debug cmdlet to produce "traces" from a script, and one attendee asked if that debug output could be redirected to a file. That way, when he was running a script unattended - as a scheduled task, for example - he could still capture that output. Unfortunately, Write-Debug can't be redirected when it's running in the normal PowerShell console (a custom host could do so, but that was a bit out of scope for this fellow since a custom host requires quite a bit of .NET development).

Don Jones

April 4, 2011

1 Min Read
ITPro Today logo in a gray background | ITPro Today

Got a great question from an attendee at last week's Windows Connections conference. We were discussing how to use the Write-Debug cmdlet to produce "traces" from a script, and one attendee asked if that debug output could be redirected to a file. That way, when he was running a script unattended - as a scheduled task, for example - he could still capture that output. Unfortunately, Write-Debug can't be redirected when it's running in the normal PowerShell console (a custom host could do so, but that was a bit out of scope for this fellow since a custom host requires quite a bit of .NET development).

I suggested instead that he create a replacement for Write-Debug, such as a Write-DebugLog function. Here's what it might look like:

$DebuglogPreference = 'Continue'function Write-DebugLog {  param(    [string]$message,    [string]$filepath = 'c:debug.txt'  )  if ($DebuglogPreference -eq 'Continue') {    $message | Out-File $filepath -append  }}
This defines a script-level $DebuglogPreference variable, which when set to 'Continue' will enable logging, and when set to anything else will turn off logging. You call the function like this:

Write-DebugLog 'This is my message'
By default, messages go to a file named c:debug.txt, although you could pass an alternate filename as a second parameter when calling the function.

Sign up for the ITPro Today newsletter
Stay on top of the IT universe with commentary, news analysis, how-to's, and tips delivered to your inbox daily.

You May Also Like