Add ForceReboot option to force reboot after Windows Updates regardless of pending reboot state

This commit is contained in:
Patrick Asmus
2026-07-14 14:39:42 +02:00
parent c236b08311
commit e7d116b099
3 changed files with 17 additions and 5 deletions

View File

@@ -33,6 +33,8 @@ Enabled = false
[Reboot]
# Enable automatic reboot after updates if required (true/false)
Enabled = false
# Force reboot after updates even if Windows does not require one (true/false)
ForceReboot = false
# Reboot mode: immediate, delayed, scheduled
Mode = immediate
# Delay in minutes before reboot (only for Mode = delayed)

View File

@@ -33,6 +33,7 @@ Alle Einstellungen werden in der Datei `config.ini` vorgenommen, die sich im sel
| Option | Typ | Standard | Beschreibung |
|---|---|---|---|
| `Enabled` | Boolean | `false` | Automatischen Neustart nach Updates aktivieren |
| `ForceReboot` | Boolean | `false` | Neustart nach Updates erzwingen, auch wenn Windows keinen Reboot anfordert. Setzt `Enabled = true` voraus |
| `Mode` | String | `immediate` | Neustart-Modus: `immediate` (sofort), `delayed` (verzögert), `scheduled` (geplante Uhrzeit) |
| `DelayMinutes` | Integer | `5` | Verzögerung in Minuten (nur bei `Mode = delayed`) |
| `ScheduledTime` | String | `03:00` | Uhrzeit im Format HH:mm (nur bei `Mode = scheduled`). Liegt die Uhrzeit in der Vergangenheit, wird der nächste Tag verwendet |
@@ -213,6 +214,7 @@ EmailHtmlReport = true
[Reboot]
Enabled = true
ForceReboot = false
Mode = delayed
DelayMinutes = 10
```
@@ -236,6 +238,7 @@ Enabled = true
[Reboot]
Enabled = true
ForceReboot = false
Mode = scheduled
ScheduledTime = 03:00

View File

@@ -9,9 +9,9 @@ Author: Patrick Asmus
Web: https://www.cleveradmin.de
Repository: https://git.techniverse.net/scriptos/windows-updater.git
License: MIT
Version: 2.8.0
Date: 07.07.2026
Modifications: Add -DefenderOnly, -DryRun, -ConfigFile parameters and UpdateType config option
Version: 2.9.0
Date: 14.07.2026
Modifications: Add ForceReboot option to force reboot after Windows Updates regardless of pending reboot state
#####################################################
#>
@@ -1344,8 +1344,15 @@ function Start-WindowsUpdater {
# --- Reboot Handling (skip in DefenderOnly mode) ---
if (-not $script:DefenderOnlyMode) {
$script:RebootPending = Test-PendingReboot
if ($script:RebootPending) {
Write-Log "System reboot is pending"
$forceReboot = Get-ConfigValue -Config $script:Config -Section "Reboot" -Key "ForceReboot" -Default $false -Type bool
if ($script:RebootPending -or $forceReboot) {
if ($forceReboot -and -not $script:RebootPending) {
Write-Log "ForceReboot is enabled, rebooting even though no reboot is pending"
}
else {
Write-Log "System reboot is pending"
}
$rebootHandled = Invoke-ScheduledReboot
if (-not $rebootHandled) {
Write-Log "Auto-reboot is disabled, manual reboot required" -Level WARN