Get-/Test-EventLogSource
The System.Diagnostics
methods are limiting. There can be only one source on a computer. Different computers may have the same source, but in different logs. In my experience you start running into issues after working with these methods and creating/removing logs and sources. I wrote the following to verify my custom log/source.
Set-StrictMode -Version Latest
function Get-EventLogSource {
[CmdletBinding()]
param(
[string]$LogFile = '*',
[string]$Source = '*'
)
Get-CimInstance -Class Win32_NTEventLOgFile -Verbose:$false | ForEach-Object {
$_logName = $PSItem.FileName
$PSItem.Sources | ForEach-Object {
$oResult = New-Object PSCustomObject -Property @{
Source = $PSItem
LogName = $_logName
} | Select-Object -Property Source, LogName
Write-Output $oResult
}
} | Sort-Object -Property Source | Where-Object { $PSItem.Source -like $Source -and $PSItem.LogName -like $LogFile }
}
function Test-EventLogSource {
[CmdletBinding()]
param(
[string]$LogFile = '*',
[Parameter(Mandatory)]
[string]$Source
)
$_result = Get-EventLogSource -LogFile $LogFile -Source $Source
return ($null -ne $_result)
}
Clear-Host
#Test-EventLogSource -LogFile 'System' -Source '.NET*' -Verbose
#Test-EventLogSource -LogFile 'Application' -Source '.NET*' -Verbose
#Test-EventLogSource -LogFile 'dummy' -Source '.NET*' -Verbose
#Test-EventLogSource -LogFile '*' -Source '.NET*' -Verbose
#Test-EventLogSource -Source '.NET*' -Verbose
#Test-EventLogSource -LogFile 'Application' -Source 'vs' -Verbose
#Test-EventLogSource -LogFile '*' -Source 'vss' -Verbose
#Test-EventLogSource -Source '*power*'
#Get-EventLogSource
#Get-EventLogSource -LogFile 'System' -Source '.NET*' -Verbose | Format-Table
#Get-EventLogSource -LogFile 'Application' -Source '.NET*' -Verbose | Format-Table
#Get-EventLogSource -LogFile 'dummy' -Source '.NET*' -Verbose | Format-Table
#Get-EventLogSource -LogFile '*' -Source '.NET*' -Verbose | Format-Table
#Get-EventLogSource -Source '.NET*' -Verbose | Format-Table
#Get-EventLogSource -LogFile 'Application' -Source 'vs' -Verbose | Format-Table
#Get-EventLogSource -LogFile '*' -Source 'vss' -Verbose | Format-Table
#Get-EventLogSource -Source '*power*'| Format-Table
Using Get-WinEvent
Get-WinEvent -ListProvider * -ErrorAction SilentlyContinue |
Select-Object -Property Name -ExpandProperty LogLinks |
Select-Object -Property Name, LogName |
Sort-Object -Property Name