Windows Event ID and Event Log Cheat Sheet

Windows Event ID reference for sysadmins: logon and lockout events, Kerberos codes, service and disk failures, plus Get-WinEvent, wevtutil and XPath filter syntax.

Start here

Who locked this account out?
4740 on the PDC emulator
Who logged on, and how?
4624 plus the logon type
Why did the logon fail?
4625 status code
Did the server crash or reboot cleanly?
6008, 1074, 41
Did a service die?
7031, 7034, 7000
Is the disk failing?
7, 51, 153, 55
Read the log, not the ID alone. The same ID means different things per provider. Always pair the Event ID with the log name and the provider that wrote it.

Which log holds what

Looking forLog
Logons, lockouts, privilege use, audit policySecurity
Drivers, services, disks, boot and shutdownSystem
Application crashes and hangsApplication
Servicing and feature installsSetup plus CBS.log
Scheduled task resultsMicrosoft-Windows-TaskScheduler/Operational
RDP session logon and logoffTerminalServices-LocalSessionManager/Operational
RDP incoming connections and source IPTerminalServices-RemoteConnectionManager/Operational
Windows Update install resultsWindowsUpdateClient/Operational
Group Policy processingGroupPolicy/Operational
SMB share connectivitySMBClient/Connectivity
Slow boot and slow logonDiagnostics-Performance/Operational
AD replication and directory errorsDirectory Service

Logon and logoff

IDMeaning
4624Logon succeeded
4625Logon failed
4634Logoff
4647User initiated logoff
4648Logon using explicit credentials (runas, mapped drive)
4672Special privileges assigned, in practice an admin logon
4778 / 4779Session reconnected / disconnected
4800 / 4801Workstation locked / unlocked

Logon types

TypeWhat it was
2Interactive, at the console
3Network, a share or a remote PowerShell call
4Batch, a scheduled task
5Service, started by the SCM
7Unlock of an existing session
8Network with a cleartext password, often IIS basic auth
9New credentials, runas /netonly
10RemoteInteractive, RDP
11Cached interactive, no DC was reachable
\n

Failed logon status codes

StatusReason
0xC0000064User name does not exist
0xC000006ACorrect user name, wrong password
0xC0000234Account is locked out
0xC0000072Account is disabled
0xC0000193Account has expired
0xC0000071Password has expired
0xC0000224User must change password at next logon
0xC000006FLogon outside permitted hours
0xC0000070Workstation restriction
0xC0000133Clock skew between client and DC
Read the substatus. The Status field is often the generic 0xC000006D. The real reason sits in Sub Status.

Account management and lockouts

IDMeaning
4720User account created
4722User account enabled
4723User changed their own password
4724Admin reset a password
4725User account disabled
4726User account deleted
4738User account changed
4740Account locked out
4767Account unlocked
4728 / 4729Member added to / removed from a global group
4732 / 4733Member added to / removed from a local group
4756 / 4757Member added to / removed from a universal group
Lockouts live on one DC. Every 4740 is written on the PDC emulator. Query that DC, then read the Caller Computer Name field to find the machine still presenting the old password.

Kerberos and NTLM

IDMeaning
4768TGT requested, the user authenticated to the KDC
4769Service ticket requested, the user reached a service
4770Ticket renewed
4771Kerberos pre-authentication failed
4776NTLM credential validation, success or failure
4769 + 0x1FIntegrity check failed, often a duplicate SPN
Result codeReason
0x6Client not found, the user name does not exist
0x12Account disabled, expired or locked out
0x17Password expired
0x18Wrong password
0x25Clock skew too great
0xENo matching encryption type

Boot, shutdown and services

IDProviderMeaning
6005EventLogEvent log service started, the machine booted
6006EventLogEvent log service stopped, a clean shutdown
6008EventLogPrevious shutdown was unexpected
6013EventLogSystem uptime, written daily
1074User32Shutdown or restart requested, names the process and user
41Kernel-PowerRebooted without a clean shutdown, power loss or bugcheck
1001BugCheckBlue screen, carries the stop code
7000Service Control ManagerService failed to start
7009Service Control ManagerTimed out connecting to the service
7011Service Control ManagerService did not answer in time
7031Service Control ManagerService terminated unexpectedly, recovery action follows
7034Service Control ManagerService terminated unexpectedly, no recovery configured
7036Service Control ManagerService entered the running or stopped state
7045Service Control ManagerA new service was installed
7045 is worth an alert. A service appearing out of nowhere on a member server is either a deployment you did not do, or an intrusion.
\n

Disk, storage and NTFS

IDProviderMeaning
7diskBad block on the device
11disk / controllerController error, often cabling or HBA
51diskError during a paging operation
52diskPredictive failure, SMART warning
153diskIO retried, usually a failing path or disk
129storahci / storportReset to device issued, the disk stopped answering
55NtfsFile system structure is corrupt, run chkdsk
98NtfsVolume corruption detected
140NtfsFailed to flush data to the transaction log
2013srvDisk is at or near capacity
129 and 153 are not noise. Repeated resets and retries on a production volume mean the storage path is already failing. Check the array before the next reboot decides for you.

Applications and updates

IDProviderMeaning
1000Application ErrorApplication crashed, names the module and offset
1002Application HangApplication stopped responding
1026.NET RuntimeUnhandled .NET exception
1001Windows Error ReportingCrash bucket, useful for grouping repeats
43WindowsUpdateClientInstallation started
19WindowsUpdateClientInstallation succeeded
20WindowsUpdateClientInstallation failed, carries the error code
44WindowsUpdateClientDownload started

RDP sessions and scheduled tasks

IDChannelMeaning
1149RemoteConnectionManagerNetwork connection accepted, carries the source IP
21LocalSessionManagerSession logon succeeded
23LocalSessionManagerSession logoff
24LocalSessionManagerSession disconnected
25LocalSessionManagerSession reconnected
101TaskSchedulerTask failed to start
103TaskSchedulerAction failed to start
111TaskSchedulerTask terminated by the scheduler
201TaskSchedulerAction completed, carries the return code
332TaskSchedulerWrong credentials or the account cannot log on as batch

Get-WinEvent

TaskCommand
Last 50 System entriesGet-WinEvent -LogName System -MaxEvents 50
Failed logons in the last dayGet-WinEvent -FilterHashtable @{LogName='Security';Id=4625;StartTime=(Get-Date).AddDays(-1)}
Errors and criticals onlyGet-WinEvent -FilterHashtable @{LogName='System';Level=1,2}
One providerGet-WinEvent -FilterHashtable @{LogName='System';ProviderName='disk'}
An operational channelGet-WinEvent -FilterHashtable @{LogName='Microsoft-Windows-TaskScheduler/Operational';Id=101}
Remote machineGet-WinEvent -ComputerName SRV01 -FilterHashtable @{LogName='System';Id=7031}
Read a saved fileGet-WinEvent -Path C:\temp\system.evtx -Oldest
Logs that actually contain recordsGet-WinEvent -ListLog * | Where-Object RecordCount -gt 0
Readable output... | Select-Object TimeCreated,Id,LevelDisplayName,Message
Named field instead of the message blob$e.Properties[5].Value or ([xml]$e.ToXml())
LevelMeaning
1Critical
2Error
3Warning
4Information
5Verbose
Filter at the source. -FilterHashtable is evaluated by the log service. Piping everything into Where-Object pulls the whole log across the wire and can take minutes on a busy DC.
\n

wevtutil

TaskCommand
List every log and channelwevtutil el
Configuration of one logwevtutil gl System
Record count and file sizewevtutil gli System
Last 20 entries, newest firstwevtutil qe System /c:20 /rd:true /f:text
One Event IDwevtutil qe Security /q:"*[System[(EventID=4625)]]" /c:10 /rd:true /f:text
Export a log to a filewevtutil epl System C:\temp\system.evtx
Export with the message strings includedwevtutil al C:\temp\system.evtx
Raise the maximum size to 100 MBwevtutil sl System /ms:104857600
Enable a disabled channelwevtutil sl "Microsoft-Windows-TaskScheduler/Operational" /e:true
Clear a logwevtutil cl System
Clearing is not troubleshooting. wevtutil cl destroys the evidence you are about to need. Export with epl first, and never clear the Security log on a machine under investigation.

XPath filters

FilterMatches
*[System[(EventID=4625)]]One Event ID
*[System[(EventID=4624 or EventID=4634)]]Either of two IDs
*[System[(Level=1 or Level=2)]]Critical and error only
*[System[Provider[@Name='disk']]]One provider
*[System[TimeCreated[timediff(@SystemTime) <= 86400000]]]Last 24 hours, in milliseconds
*[EventData[Data[@Name='TargetUserName']='jdoe']]One user inside the event data
*[EventData[Data[@Name='LogonType']='10']]RDP logons only
Build it in the GUI. Event Viewer, Filter Current Log, then the XML tab: it writes valid XPath for you, which you paste into wevtutil /q: or Get-WinEvent -FilterXPath.

FAQ

Event Viewer shows entries, but Get-WinEvent returns nothing. Why?
Almost always elevation. The Security log needs an administrative token, and a non-elevated console returns “No events were found” rather than an access error. The second cause is a typo in a -FilterHashtable key, which is silently treated as no match.
Which machine holds the answer to a lockout?
The PDC emulator. Find it with netdom query fsmo, then query 4740 there and read Caller Computer Name. That is the machine still sending the old password, typically a stale mapped drive, a service account or a phone with a saved mailbox password.
Why does 4625 sometimes show an empty source address?
The field is filled by the network layer, so it stays empty for local and service logons. For RDP, the reliable source of the client IP is 1149 in the RemoteConnectionManager channel, not the Security log.
How far back does a log go?
Until the file hits its maximum size and starts overwriting. Check with wevtutil gl Security, and on anything you may need to audit, raise /ms: before an incident rather than after it.
Can I read an .evtx taken from another server?
Yes, with Get-WinEvent -Path file.evtx -Oldest. Message text is rendered from the provider’s resources, so a file read on a machine without that provider shows the data but not the formatted description. Export with wevtutil al to keep the strings.