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

54 lines
2.0 KiB
PowerShell

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