Private/Get-PowerHistory.ps1
function Get-PowerHistory { [CmdletBinding()] param ( [Parameter()] [int] $Days ) begin { #Gather Event Log Data $FilterHashTable = @{ logname = 'System' id = 1074, 6005, 6006, 6008, 42 } if ($Days) { $DaysInv = $Days * -1 $StartTime = (Get-Date).AddDays($DaysInv) $FilterHashTable.StartTime = $StartTime } try { $WinEvents = Get-WinEvent -FilterHashtable $FilterHashTable -ErrorAction 'SilentlyContinue' $TextInfo = (Get-Culture).TextInfo } catch { Write-Warning $_.Exception.Message } } process { foreach ($Event in $WinEvents) { switch ($Event.Id) { 1074 { $Event.Message = $TextInfo.ToTitleCase($Event.Properties.value[4]) } 6005 { $Event.Message = 'Power On' } 6006 { $Event.Message = 'Power Off' } 6008 { $Event.Message = 'Unexpected Shutdown' } 42 { $Event.Message = 'Sleep' } Default {} } } } end { return $WinEvents } } |