Add ForceReboot option to force reboot after Windows Updates regardless of pending reboot state
This commit is contained in:
@@ -33,6 +33,8 @@ Enabled = false
|
|||||||
[Reboot]
|
[Reboot]
|
||||||
# Enable automatic reboot after updates if required (true/false)
|
# Enable automatic reboot after updates if required (true/false)
|
||||||
Enabled = false
|
Enabled = false
|
||||||
|
# Force reboot after updates even if Windows does not require one (true/false)
|
||||||
|
ForceReboot = false
|
||||||
# Reboot mode: immediate, delayed, scheduled
|
# Reboot mode: immediate, delayed, scheduled
|
||||||
Mode = immediate
|
Mode = immediate
|
||||||
# Delay in minutes before reboot (only for Mode = delayed)
|
# Delay in minutes before reboot (only for Mode = delayed)
|
||||||
|
|||||||
@@ -33,6 +33,7 @@ Alle Einstellungen werden in der Datei `config.ini` vorgenommen, die sich im sel
|
|||||||
| Option | Typ | Standard | Beschreibung |
|
| Option | Typ | Standard | Beschreibung |
|
||||||
|---|---|---|---|
|
|---|---|---|---|
|
||||||
| `Enabled` | Boolean | `false` | Automatischen Neustart nach Updates aktivieren |
|
| `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) |
|
| `Mode` | String | `immediate` | Neustart-Modus: `immediate` (sofort), `delayed` (verzögert), `scheduled` (geplante Uhrzeit) |
|
||||||
| `DelayMinutes` | Integer | `5` | Verzögerung in Minuten (nur bei `Mode = delayed`) |
|
| `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 |
|
| `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]
|
[Reboot]
|
||||||
Enabled = true
|
Enabled = true
|
||||||
|
ForceReboot = false
|
||||||
Mode = delayed
|
Mode = delayed
|
||||||
DelayMinutes = 10
|
DelayMinutes = 10
|
||||||
```
|
```
|
||||||
@@ -236,6 +238,7 @@ Enabled = true
|
|||||||
|
|
||||||
[Reboot]
|
[Reboot]
|
||||||
Enabled = true
|
Enabled = true
|
||||||
|
ForceReboot = false
|
||||||
Mode = scheduled
|
Mode = scheduled
|
||||||
ScheduledTime = 03:00
|
ScheduledTime = 03:00
|
||||||
|
|
||||||
|
|||||||
@@ -9,9 +9,9 @@ Author: Patrick Asmus
|
|||||||
Web: https://www.cleveradmin.de
|
Web: https://www.cleveradmin.de
|
||||||
Repository: https://git.techniverse.net/scriptos/windows-updater.git
|
Repository: https://git.techniverse.net/scriptos/windows-updater.git
|
||||||
License: MIT
|
License: MIT
|
||||||
Version: 2.8.0
|
Version: 2.9.0
|
||||||
Date: 07.07.2026
|
Date: 14.07.2026
|
||||||
Modifications: Add -DefenderOnly, -DryRun, -ConfigFile parameters and UpdateType config option
|
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) ---
|
# --- Reboot Handling (skip in DefenderOnly mode) ---
|
||||||
if (-not $script:DefenderOnlyMode) {
|
if (-not $script:DefenderOnlyMode) {
|
||||||
$script:RebootPending = Test-PendingReboot
|
$script:RebootPending = Test-PendingReboot
|
||||||
if ($script:RebootPending) {
|
$forceReboot = Get-ConfigValue -Config $script:Config -Section "Reboot" -Key "ForceReboot" -Default $false -Type bool
|
||||||
Write-Log "System reboot is pending"
|
|
||||||
|
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
|
$rebootHandled = Invoke-ScheduledReboot
|
||||||
if (-not $rebootHandled) {
|
if (-not $rebootHandled) {
|
||||||
Write-Log "Auto-reboot is disabled, manual reboot required" -Level WARN
|
Write-Log "Auto-reboot is disabled, manual reboot required" -Level WARN
|
||||||
|
|||||||
Reference in New Issue
Block a user