From e7d116b099b0eddcb920ee4f101eb895a4f892aa Mon Sep 17 00:00:00 2001 From: Patrick Asmus Date: Tue, 14 Jul 2026 14:39:42 +0200 Subject: [PATCH] Add ForceReboot option to force reboot after Windows Updates regardless of pending reboot state --- config.example.ini | 2 ++ docs/configuration.md | 3 +++ windows-updater.ps1 | 17 ++++++++++++----- 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/config.example.ini b/config.example.ini index 2634038..d8226fc 100644 --- a/config.example.ini +++ b/config.example.ini @@ -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) diff --git a/docs/configuration.md b/docs/configuration.md index dfb713f..c724090 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -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 diff --git a/windows-updater.ps1 b/windows-updater.ps1 index 5fac1c8..2e37c75 100644 --- a/windows-updater.ps1 +++ b/windows-updater.ps1 @@ -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