Files
management-scripts/Restart-EndpointOnUptime.ps1
T
2024-02-28 14:04:06 -05:00

21 lines
957 B
PowerShell

Function Restart-EndpointOnUptime ([int]$MaxUptimeHours) {
# Check the last boot up time
Try { $LastBootUpTime = Get-WmiObject -Class Win32_OperatingSystem1 -ErrorAction SilentlyContinue | Select-Object -ExpandProperty LastBootUpTime }
Catch { Write-Error $_.Exception.Message }
$LastBootUpTime = [Management.ManagementDateTimeConverter]::ToDateTime($LastBootUpTime)
# Calculate the difference in hours
$CurrentTime = Get-Date
$TimeDifference = $CurrentTime - $LastBootUpTime
$DifferenceInHours = $TimeDifference.TotalHours
# Check if the difference is greater than $MaxUptimeHours
If ($DifferenceInHours -gt $MaxUptimeHours) {
# Restart the computer
Write-Output "Restarting computer because it has not been restarted in the last ${MaxUptimeHours} hours."
Restart-Computer
} Else {
Write-Output "No need to restart. The last restart was within ${MaxUptimeHours} hours."
}
}