ansitest/powershell/win-show-error-log-common--RUN-AS-ADMIN.ps1
2023-05-12 10:17:53 -05:00

62 lines
2.0 KiB
PowerShell

<# REF: https://www.reddit.com/r/PowerShell/comments/10dbu5o/find_frequent_event_viewer_errors_lookup_their/
#>
# Clear the console screen for a fresh start
Clear-Host
# Function to retrieve and filter events from the System log
function Get-SystemEvents {
# Retrieve events from the "System" event log that have a level of 2 or 3
Get-WinEvent -LogName System -FilterXPath "*[System[Level=2 or Level=3]]" |
# Create a custom object for each event
ForEach-Object {
[PSCustomObject]@{
EventID = $_.Id
Message = $_.Message
Count = 1
}
} |
# Group the objects by the EventID
Group-Object -Property EventID |
# Sort the groups by the Count in descending order
Sort-Object -Property Count -Descending |
# Select the first 5 groups
Select-Object @{Name='Count'; Expression={$_.Count}},
@{Name='Event ID'; Expression={$_.Group[0].EventID}},
@{Name='Message'; Expression={$_.Group[0].Message}} -First 5
}
Write-Host "Checking your computer for most frequent errors..." -ForegroundColor Yellow
# Pause so user can read
Start-Sleep 3
# Call the function once to display results in console
Get-SystemEvents |
# Without Out-Host piped, Write-Host will steal the spotlight and hide function output
Out-Host
# Inform user you will find solutions
Write-Host "Please wait. I will retrieve your solutions..." -ForegroundColor Green
# Put the events into a variable to iterate through
$Events = Get-SystemEvents
# Pause so user can read
Start-Sleep 5
# Iterate through each event
foreach ($Event in $Events) {
# Create a search string by combining the EventID and Message properties
$SearchString = "$($Event.EventID) $($Event.Message)"
# Replace spaces with "+"
$SearchString = $SearchString -replace ' ', '+'
# Open the search results in Microsoft Edge (in case default browser is set to a malware browser)
Start-Process "msedge.exe" -ArgumentList "https://www.bing.com/search?q=$SearchString+site:microsoft.com"
}