src/Private/Core/Get-FotonWinEvent.ps1
|
function Get-FotonWinEvent { <# Wraps Get-WinEvent so a missing log or empty result is a status, not a terminating error. #> param( [string]$LogName, [int[]]$EventIds, [datetime]$StartTime, [int]$MaxEvents ) try { $filter = @{ LogName = $LogName; StartTime = $StartTime } if ($EventIds -and $EventIds.Count -gt 0) { $filter['Id'] = $EventIds } return Get-WinEvent -FilterHashtable $filter -MaxEvents $MaxEvents -ErrorAction Stop } catch { return $null } } function ConvertTo-FotonEventRow { param($EventRecord, [string]$LogLabel) $msg = '' try { $msg = $EventRecord.Message } catch { } if ($msg -and $msg.Length -gt 2000) { $msg = $msg.Substring(0, 2000) + '...[truncated]' } return [PSCustomObject]@{ TimeCreatedUtc = $EventRecord.TimeCreated.ToUniversalTime().ToString('yyyy-MM-dd HH:mm:ss') Log = $LogLabel EventId = $EventRecord.Id Level = [string]$EventRecord.LevelDisplayName Provider = $EventRecord.ProviderName Computer = $EventRecord.MachineName UserSid = [string]$EventRecord.UserId RecordId = $EventRecord.RecordId Message = ($msg -replace '\s+', ' ') } } |