Function Restart-EndpointOnUptime ([int]$MaxUptimeHours) { # Check the last boot up time #$LastBootUpTime = $LastBootUpTime = [Management.ManagementDateTimeConverter]::ToDateTime($(Get-WmiObject -Class Win32_OperatingSystem -ErrorAction Stop | Select-Object -ExpandProperty LastBootUpTime)) # Calculate the difference in hours #$CurrentTime = #$TimeDifference = #$DifferenceInHours = # Check if the difference is greater than $MaxUptimeHours If ($($(Get-Date) - $LastBootUpTime).TotalHours -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." } }