Powershell – CMTrace Log Function
I’ve always been a huge fan of having detailed log files when running scripts at work. I originally wrote a log function to output date & time & message to a file, but it would be hard to read. I decided to write a function in CMTrace format so I could open these files with CMTrace and quickly see what I wanted to see (for instance, Errors show up in red!)
Function:
function Log {
Param (
[Parameter(Mandatory=$false)]
$Message,
[Parameter(Mandatory=$false)]
$ErrorMessage,
[Parameter(Mandatory=$false)]
$Component,
[Parameter(Mandatory=$false)]
[int]$Type,
[Parameter(Mandatory=$true)]
$LogFile
)
<#
Type: 1 = Normal, 2 = Warning (yellow), 3 = Error (red)
#>
$Time = Get-Date -Format "HH:mm:ss.ffffff"
$Date = Get-Date -Format "MM-dd-yyyy"
if ($ErrorMessage -ne $null) {$Type = 3}
if ($Component -eq $null) {$Component = " "}
if ($Type -eq $null) {$Type = 1}
$LogMessage = "<![LOG[$Message $ErrorMessage" + "]LOG]!><time=`"$Time`" date=`"$Date`" component=`"$Component`" context=`"`" type=`"$Type`" thread=`"`" file=`"`">"
$LogMessage | Out-File -Append -Encoding UTF8 -FilePath $LogFile
}
Parameters are:
Message – Part of the log message ErrorMessage – Gets put in the log message. If not null, makes the line appear red in CMTrace. Component – CMTRace has a component column, this will appear in that column Type – Valid numbers are 1 (Normal), 2 (Warning – Yellow), 3 (Error – Red) LogFile – The file you want to output to
Usage:
$LogFile = "C:\TestFolder\TestLog.Log" Log -LogFile $LogFile Log -Message "This is a normal message" -ErrorMessage $Error -LogFile $LogFile Log -Message "This is a warning" -Type 2 -Component "Test Component" -LogFile $LogFile Log -Message "This is an Error!" -Type 3 -Component "Error Component" -LogFile $LogFile
Output in CMTrace:

Leave a Comment