I’m not a programmer and I have never wanted to be one. I grudgingly began learning PowerShell because it was the way of the future for Windows Systems Administration (Server Core, anyone?) From the first time I executed the Get-EventLog command, I was hooked on PowerShell. The Event Viewer in Windows is slow, I mean really slow, so when I executed the Get-EventLog command for the first time, I was amazed by how fast it ran. When I explored the options for filtering and exporting the results of Get-EventLog, I realized how powerful this command is.
The basic syntax for Get-EventLog is:
Get-EventLog -LogName <logname>
You can find out which logs you have by using Get-EventLog -List
(System, Security, PowerShell, etc.)
Using the -Newest <number>
option, you can limit the output to a specific number of entries. You can also limit the time frame by using -Before <date>
and -After <date>
.
Get-EventLog -LogName Security -newest 100
Get-EventLog -LogName system -EntryType error -After '1/17/2020 08:00:00' -Before '1/17/2020 17:00:00'
Options for filtering include -EntryType
(Error, Information, etc.), -UserName
, and -Message
(to search for text in the message). You can also look for the source of a message (such as Outlook) with the -Source
option.
Get-EventLog -LogName Security -EntryType FailureAudit -Newest 100
As with most PowerShell commands, you can use the -ComputerName option to view event logs on other Windows systems.
Get-EventLog -LogName System -ComputerName Server01, Server02, Server03
Finally, one of the best things about the Get-EventLog command is that you can pipe the results to different types of files. ConvertTo-Csv
is useful since Excel is one of my favorite tools. You can also output the results to Json (ConvertTo-Json
), XML (ConvertTo-XML
), or HTML (ConvertTo-HTML
).
Get-EventLog -LogName System | Select-Object -Property timegenerated, username, message | Export-Csv <path>
For more details, see the Microsoft help for Get-EventLog: