ps/Modules/Alkami.DevOps.Inventory/Public/Get-RestartHistory.ps1
2023-05-30 22:51:22 -07:00

52 lines
1.9 KiB
PowerShell

function Get-RestartHistory {
<#
.SYNOPSIS
Returns an OrderedDictionary that Represents the Restart History.
#>
[CmdletBinding()]
Param()
$logLead = (Get-LogLeadName);
$providerStopWatch = [System.Diagnostics.StopWatch]::StartNew()
$historyDictionary = New-Object System.Collections.Specialized.OrderedDictionary
$rebootHistoryDetails = New-Object System.Collections.Specialized.OrderedDictionary
try {
Write-Verbose "$logLead : [$($providerStopWatch.Elapsed)] : Getting Event Log Entries for Event ID 1074"
$dateLimit = (Get-Date) - (New-TimeSpan -Day 90)
$restartEvents = Get-WinEvent -FilterHashtable @{
LogName = 'System'
Id = 1074
StartTime = $dateLimit
}
foreach ($event in $restartEvents) {
$eventId = [string]$event.RecordId
Write-Verbose "$logLead : [$($providerStopWatch.Elapsed)] : Processing RecordId $eventId"
$rebootHistoryDetails[$eventId] = New-Object System.Collections.Specialized.OrderedDictionary
$rebootHistoryDetails[$eventId]["Date"] = $event.TimeCreated;
$rebootHistoryDetails[$eventId]["Process"] = $event.Properties[0].Value;
$rebootHistoryDetails[$eventId]["Reason"] = $event.Properties[2].Value;
$rebootHistoryDetails[$eventId]["Action"] = $event.Properties[4].Value;
$rebootHistoryDetails[$eventId]["Comment"] = $event.Properties[5].Value;
$rebootHistoryDetails[$eventId]["User"] = $event.Properties[6].Value;
$rebootHistoryDetails[$eventId]["Message"] = $event.Message;
}
}
catch {
$rebootHistoryDetails["Error"] = $_.Exception.ToString()
}
$historyDictionary.Add("RestartHistory", $rebootHistoryDetails)
Write-Verbose "$logLead : [$($providerStopWatch.Elapsed)] : Provider Complete"
$providerStopWatch.Stop()
return $historyDictionary
}