targets/WinEventLog.ps1
@{ Name = 'WinEventLog' Configuration = @{ LogName = @{Required = $true; Type = [string]; Default = $null} Source = @{Required = $true; Type = [string]; Default = $null} } Logger = { param( [hashtable] $Log, [hashtable] $Configuration ) $Params = @{ EventId = 0 } if ($Configuration.LogName) { $Params['LogName'] = $Configuration.LogName } if ($Configuration.Source) { $Params['Source'] = $Configuration.Source } if ($Log.Body.EventId) { $Params['EventId'] = $Log.Body.EventId } switch ($Log.LevelNo) { {$_ -ge 40} { $Params['EntryType'] = 'Error' } {$_ -ge 30 -and $_ -lt 40} { $Params['EntryType'] = 'Warning' } {$_ -lt 30} { $Params['EntryType'] = 'Information' } } $Params['Message'] = $Log.Message if ($Log.ExecInfo) { $ExceptionFormat = "{0}`n" + "{1}`n" + "+ CategoryInfo : {2}`n" + "+ FullyQualifiedErrorId : {3}`n" $ExceptionFields = @($Log.ExecInfo.Exception.Message, $Log.ExecInfo.InvocationInfo.PositionMessage, $Log.ExecInfo.CategoryInfo.ToString(), $Log.ExecInfo.FullyQualifiedErrorId) if ( [string]::IsNullOrEmpty($Params['Message']) ){ $Params['Message'] = $ExceptionFormat -f $ExceptionFields } else { $Params['Message'] += "`n`n" + ($ExceptionFormat -f $ExceptionFields) } } Write-EventLog @Params } } |