# BSOD Quick Triage — runs all 9 checks in parallel # Usage: powershell -ExecutionPolicy Bypass -File bsod-triage.ps1 # Outputs results grouped by check $ErrorActionPreference = 'SilentlyContinue' Write-Host "=== MINIDUMPS ===" -ForegroundColor Cyan Get-ChildItem C:\Windows\Minidump\ | Format-List Name,Length,LastWriteTime Write-Host "`n=== BUGCHECK CODES ===" -ForegroundColor Cyan Get-WinEvent -FilterHashtable @{LogName='System'; ProviderName='Microsoft-Windows-WER-SystemErrorReporting'; Id=1001} -MaxEvents 20 | Format-List TimeCreated,Message Write-Host "`n=== UNEXPECTED SHUTDOWNS ===" -ForegroundColor Cyan Get-WinEvent -FilterHashtable @{LogName='System'; ProviderName='Microsoft-Windows-Kernel-Power','Microsoft-Windows-WER-SystemErrorReporting'} -MaxEvents 20 | Select-Object TimeCreated,Id,ProviderName,@{N='Msg';E={$_.Message.Substring(0,[Math]::Min(500,$_.Message.Length))}} | Format-List Write-Host "`n=== GPU DRIVER ===" -ForegroundColor Cyan Get-CimInstance Win32_VideoController | Select-Object Name,DriverVersion,DriverDate,Status,AdapterRAM | Format-List Write-Host "`n=== WHEA HARDWARE ERRORS ===" -ForegroundColor Cyan Get-WinEvent -FilterHashtable @{LogName='System'; ProviderName='Microsoft-Windows-Kernel-WHEA'} -MaxEvents 10 | Format-List TimeCreated,Message Write-Host "`n=== MEMORY DIAGNOSTICS ===" -ForegroundColor Cyan Get-WinEvent -FilterHashtable @{LogName='System'; ProviderName='Microsoft-Windows-MemoryDiagnostics-Results'} -MaxEvents 5 | Format-List TimeCreated,Message Write-Host "`n=== CRITICAL/ERROR EVENTS TODAY ===" -ForegroundColor Cyan Get-WinEvent -FilterHashtable @{LogName='System'; Level=1,2} -MaxEvents 50 | Where-Object { $_.TimeCreated -gt (Get-Date).Date } | Select-Object TimeCreated,ProviderName,Id | Format-Table -AutoSize Write-Host "`n=== CRASHING SERVICES ===" -ForegroundColor Cyan Get-WinEvent -FilterHashtable @{LogName='System'; ProviderName='Service Control Manager'; Id=7031} -MaxEvents 10 | Format-List TimeCreated,Message Write-Host "`n=== DWM CRASHES ===" -ForegroundColor Cyan Get-WinEvent -FilterHashtable @{LogName='Application'; ProviderName='Application Error'} -MaxEvents 20 | Where-Object { $_.Message -match 'dwm\.exe' } | Format-List TimeCreated,Message Write-Host "`n=== DISK SPACE ===" -ForegroundColor Cyan Get-PSDrive -PSProvider FileSystem | Select-Object Name,@{N='UsedGB';E={[math]::Round($_.Used/1GB,1)}},@{N='FreeGB';E={[math]::Round($_.Free/1GB,1)}} | Format-Table -AutoSize Write-Host "`n=== PAGEFILE ===" -ForegroundColor Cyan Get-CimInstance Win32_PageFileUsage | Select-Object Name,CurrentUsage,AllocatedBaseSize,PeakUsage | Format-List Write-Host "`n=== MEMORY COMMIT ===" -ForegroundColor Cyan Get-CimInstance Win32_OperatingSystem | Select-Object @{N='PhysicalMB';E={[math]::Round($_.TotalVisibleMemorySize/1KB)}},@{N='CommitLimitMB';E={[math]::Round($_.TotalVirtualMemorySize/1KB)}},@{N='CommitUsedMB';E={[math]::Round(($_.TotalVirtualMemorySize-$_.FreeVirtualMemory)/1KB)}} | Format-List