Force automatic restart even with users logged in after installation of updates on Windows 8.1 Professional
Solution 1
Updated version of Drifter104s answer.
This will do what you want with a Powershell script, as it still seems very hard (impossible?) to get this configured correctly through group policy / registry.
-
Install the Test-PendingReboot Powershell module:
Install-Module -Name PendingReboot
-
Then create a scheduled task to run the following powershell commands
$RebootStatus = $null $RebootStatus = Test-PendingReboot | Select IsRebootPending | Where-Object {$_.IsRebootPending -like "True"} if ($RebootStatus -ne $null) {shutdown -r -f -t 60}
The changes I made compared to the previous answer are:
- The Powershell script provided previously is no longer being developed and has been replaced with the one I linked.
- Installing the script as a PowerShell module should automatically make it available for all users, meaning that you don't need to make it load automatically (the link to those instructions is now broken any way)
- The results from the new PS Module are slightly different and so the query to find out 'RebootStatus' needed changing.
- I also initialised 'RebootStatus' to
$null
to avoid false positives in case the second line of the script is broken, commented out, wrapped in a conditional etc.
Solution 2
This will do what you want with a powershell script.
download the powershell function/module from here https://gallery.technet.microsoft.com/scriptcenter/Get-PendingReboot-Query-bdb79542
Then edit the powershell profile for all users so that function gets loaded automatically. This link explains how to do that http://www.gsx.com/blog/bid/81096/Enhance-your-PowerShell-experience-by-automatically-loading-scripts
Then create a scheduled task to run the following powershell commands
$RebootStatus = "NotSet"
$RebootStatus = Get-PendingReboot | Select WindowsUpdate | Where-Object {$_.WindowsUpdate -like "True"}
if ($RebootStatus -ne $null) {shutdown -r -f -t 60}
Basically if the return value is false it sets $RebootStatus to empty, otherwise it populates it with a value. It checks that and reboots if $RebootStatus has any value other then $null.
Sorry if this goes over things you already know.
Related videos on Youtube
Sven Koschnicke
Updated on September 18, 2022Comments
-
Sven Koschnicke almost 2 years
I want a Windows 8.1 Professional installation which is always running and accessed by users via RDP to install updates automatically and also reboot automatically if the updates require it, but this should only happen saturday night (at any other time the system needs to be running and available for users).
I changed the following registry settings:
In
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU
:-
AUOptions
=4
(Automatically download and scheduled installation) -
ScheduledInstallDay
=7
(saturday) -
ScheduledInstallTime
=0
(0 o'clock) -
NoAutoRebootWithLoggedOnUsers
=0
(also reboot with logged in users) -
AlwaysAutoRebootAtScheduledTime
=1
(force restart)
Unfortunately, this does not always work. It worked once when I set the
ScheduledInstallDay
to thursday because I read in the documentation forAlwaysAutoRebootAtScheduledTime
:When this registry value is set to 1, you are still notified of the upcoming automatic restart on the sign-in screen. However, at the end of the three-day period, the 15-minute counter begins even if the computer is locked. The restart also occurs even if the computer is locked.
Source: How to force automatic restarts after important updates in Windows 8 and Windows Server 2012
So I thought if I want the system to restart on saturday, I have to set the scheduled day three days before that, because the restart is delayed 3 days. But the system restarted on thursday. Therefor I set the scheduled day to saturday again, but now the restart did not happen at all (I always have to wait for the next update which requires a restart to test the new settings).
How do I have to configure the system so that it always reboots on saturday night if an installed update requires it, even when a user is logged in at that time?
Update: As there is still no answer, I'm starting to believe that I'm on a completely wrong path here. I would also be happy for pointers how such a thing should be done, e.g. how do you keep a remotely accessed Windows machine always up to date when there is a fixed time window for updates?
-
Sven Koschnicke almost 9 yearsIf you downvote please explain what I can improve on this question.
-
Drifter104 almost 9 yearsAs you can see the windows update settings don't always run to the same logic you might expect. Why not just reboot the machine every Saturday?
-
Sven Koschnicke almost 9 yearsPeriodically rebooting would mean that users need to reconnect and reopen their applications, even when there was no need for a reboot (I think there was no update requiring a reboot for the last month or so). This is a solution, but not an optimal one. I would rather try to write a script which checks if the reboot is needed, but I thought there is a build in mechanism, especially as the settings suggest that there is one.
-
-
Drifter104 almost 9 yearsI suggested this as a script because as you have already found out, the update settings simply don't work as expected
-
Sven Koschnicke almost 9 yearsLooks good! I will try that. Why are you setting
$RebootStatus
to"NotSet"
initially? -
Drifter104 almost 9 years@SvenKoschnicke habbit (bad habbit?) of setting and declaring them. It could be set to anything I suppose. I can get by with scripting but I've no idea on some of the best ways of doing things
-
Sven Koschnicke almost 9 yearsAll installed. Unfortunately, I can't know if this works until the next windows update which needs a restart. So I will not accept the answer for now, but you get the bounty because it would expire too early.
-
Drifter104 almost 9 yearsThank you, let me know if it doesn't work and I'll make changes
-
Sven Koschnicke over 4 yearsThank you for taking the time to post an updated version! Could you explain what you improved? I see you are using a differnt script for testing the pending reboot. Is that working better? Are there other improvements?
-
steeveeet over 4 yearsComments added above :)
-
Sven Koschnicke over 4 yearsNice! Thank you!