PowerShell Script: Retrieve Specific Event ID’s From Event Log On Multiple Computers
This script was put together very quickly to accomplish the objective stated in the title.
1: #requires -version 2.0
2: <#
3: author: Johan Vosloo
4: date: 24/11/2011
5: purpose: Retrieve event id’s from multiple machines and add to a CSV file.
6: #>
7: Try
8: {
9: $servers=get-content c:\scripts\servers.txt
10: $date=(Get-Date).AddDays(-7)
11: foreach ($server in $servers)
12: {
13: if (test-connection $server -quiet)
14: {
15: $arr1+=get-eventlog -logname system -cn $server -after $date | ?{$_.eventid -eq "21" -or $_.eventid -eq "4201"} | select MachineName,EventID,EntryType,Message
16: $arr2+=get-eventlog -logname application -cn $server -after $date | ?{$_.eventid -eq "902" -or $_.eventid -eq "1003"} | select MachineName,EventID,EntryType,Message
17: $arr3+=get-eventlog -logname "windows powershell" -cn $server -after $date | ?{$_.eventid -eq "4004"} | select MachineName,EventID,EntryType,Message
18: }
19: }
20: if ($arr1)
21: {$arr1 | export-csv c:\scripts\sysoutput.csv -notypeinformation}
22: else
23: {"No matching system log events found..."}
24: if ($arr2)
25: {$arr2 | export-csv c:\scripts\appoutput.csv -notypeinformation}
26: else
27: {"No matching application log events found..."}
28: if ($arr3)
29: {$arr3 | export-csv c:\scripts\psoutput.csv -notypeinformation}
30: else
31: {"No matching powershell log events found..."}
32: }
33: Catch
34: {
35: "An error occurred"
36: }
Requirements:
- PowerShell v2.0
- A servers.txt file in a c:\scripts folder