Advertisement
stephanlinke

[PRTG] Get Error Events

Jan 12th, 2016
238
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. param(
  2.     [string]$Computer = "",
  3.     [int]$maxAge = 1,
  4.     [string]$unit = "",
  5.     [int[]]$excludeIds = @(),
  6.     [string[]]$excludeSource = @()
  7. )
  8.  
  9. # get all event logs and prepare the result set
  10. $ResultSet = @();
  11. $EventLogs = (Get-WinEvent -ListLog *)
  12.  
  13. Foreach($EventLog in $EventLogs){
  14.    
  15.     # set the filter according to the selected unit. If the unit parameter is ommitted, hours will be used.
  16.     switch($unit){
  17.         "seconds" { $eventFilter = @{ LogName = $EventLog.LogName; Level=3; StartTime=(get-date).AddSeconds(($maxAge * -1)) } }
  18.         "minutes" { $eventFilter = @{ LogName = $EventLog.LogName; Level=3; StartTime=(get-date).AddMinutes(($maxAge * -1)) } }
  19.         "hours"   { $eventFilter = @{ LogName = $EventLog.LogName; Level=3; StartTime=(get-date).AddHours(($maxAge * -1)) } }
  20.         "days"    { $eventFilter = @{ LogName = $EventLog.LogName; Level=3; StartTime=(get-date).AddDays(($maxAge * -1)) } }
  21.         default   { $eventFilter = @{ LogName = $EventLog.LogName; Level=3; StartTime=(get-date).AddHours(($maxAge * -1)) } }
  22.     }
  23.  
  24.     # select the current log and get all events with level 3 (error)
  25.     $events = (Get-WinEvent -ErrorAction SilentlyContinue -FilterHashtable $eventFilter)
  26.  
  27.     Foreach($event in $events){
  28.         if($excludeIds -notcontains $event.Id -and $excludeSource -notcontains $event.ProviderName){
  29.             $Result = New-Object System.Object
  30.             $Result | Add-Member -Type NoteProperty -Name LogName -Value $event.LogName
  31.             $Result | Add-Member -Type NoteProperty -Name EventId -Value $event.Id
  32.             $Result | Add-Member -Type NoteProperty -Name TimeStamp -Value $event.TimeCreated
  33.             $Result | Add-Member -Type NoteProperty -Name Message -Value $event.Message
  34.             $ResultSet += $Result    
  35.         }
  36.     }
  37. }
  38.  
  39. Write-Host ("{0}:{0} error entries found within the last {1} {2}." -f $ResultSet.Count,$maxAge,$unit);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement