#Based on information from http://support.microsoft.com/kb/196452 $results = @() function GetResult($time, $message) { return New-Object psobject -Property @{ Time = $time; Message = $message }; } Get-EventLog System | ? { $_.Source -eq "EventLog" -and 6006,6008,6009 -contains $_.EventId } | % { $item = $_ switch($_.EventID) { 6006 { $results += (GetResult $item.TimeGenerated "Clean shutdown") } 6008 { if(-not ($item.Message -match "^The previous system shutdown at (.*) on (.*) was unexpected.$")) { throw "Invalid format." } $c = ($matches[2] -replace '\u200E','') + " " + ($matches[1] -replace '\u200E',''); #not sure why, but it includes the unicode character 'LEFT-TO-RIGHT MARK' $dt = [datetime]::parse($c) $results += (GetResult $dt "Dirty shutdown") } 6009 { $results += (GetResult $item.TimeGenerated "Start-up") } } } $results | sort Time -Descending
Running the script will create output similar to this:
.\ShutdownEvent.ps1 Message Time ------- ---- Start-up 7/01/2011 13:34:38 Dirty shutdown 7/01/2011 13:18:22 Start-up 7/01/2011 08:18:25 Clean shutdown 6/01/2011 16:44:41 Start-up 6/01/2011 08:19:52 Clean shutdown 5/01/2011 16:42:38 Start-up 5/01/2011 08:18:23 Clean shutdown 31/12/2010 16:21:51 Start-up 31/12/2010 08:50:07 Clean shutdown 30/12/2010 16:36:55 Start-up 30/12/2010 08:49:39 Clean shutdown 29/12/2010 16:37:34 Start-up 29/12/2010 08:50:48 Clean shutdown 24/12/2010 09:52:04 Start-up 24/12/2010 08:46:15 Clean shutdown 23/12/2010 13:25:19 Start-up 23/12/2010 08:02:46 Clean shutdown 22/12/2010 16:37:40 Start-up 22/12/2010 08:02:18 Clean shutdown 21/12/2010 16:35:55 Start-up 21/12/2010 08:02:13 Clean shutdown 20/12/2010 16:32:50 Start-up 20/12/2010 08:01:52
You can also filter the output, for example to only show dirty shut-down events:
.\ShutdownEvent.ps1 | ? { $_.Message -match 'Dirty.*' } Message Time ------- ---- Dirty shutdown 7/01/2011 13:18:22 Dirty shutdown 16/09/2010 08:23:41 Dirty shutdown 9/09/2010 11:04:31 Dirty shutdown 19/07/2010 11:35:27 Dirty shutdown 14/07/2010 13:52:24 Dirty shutdown 8/07/2010 13:40:26 Dirty shutdown 7/05/2010 08:22:57
0 comments:
Post a Comment