Private/Get-ADPDEventLog.ps1
|
function Get-ADPDEventLog { [CmdletBinding()] param( [Parameter(Mandatory)] [string]$LogName, [Parameter(Mandatory)] [datetime]$Since, [Parameter(Mandatory)] [ValidateRange(1, 5000)] [int]$MaximumEvents, [Parameter(Mandatory)] [bool]$IncludeMessage ) try { $filter = @{ LogName = $LogName; StartTime = $Since } $events = @(Get-WinEvent -FilterHashtable $filter -MaxEvents $MaximumEvents -ErrorAction Stop | ForEach-Object { $message = $null if ($IncludeMessage) { try { $message = $_.Message } catch { $message = '<Event message unavailable>' } } [pscustomobject]@{ Id = $_.Id Level = $_.LevelDisplayName TimeCreated = $_.TimeCreated Provider = $_.ProviderName Message = $message } }) [pscustomobject]@{ Name = $LogName Available = $true Error = $null Events = $events } } catch { [pscustomobject]@{ Name = $LogName Available = $false Error = $_.Exception.Message Events = @() } } } |