Windows Server updates
This article covers checking for and installing updates on an mHost Windows server through the Settings app (if the server has a desktop) or through sconfig (on Server Core), restarting safely afterward, tuning the automatic-update schedule to your needs, and why putting off patches on a server that's reachable from the internet is a bad idea.
What you'll need
- An mHost Windows server on Windows Server 2016/2019/2022 (or the older 2012 R2) — either with a desktop (Desktop Experience) or Server Core with no GUI.
- RDP access as the
Administratoraccount — if you haven't connected yet, see "VNC console and first connection (SSH/RDP)". - Local administrator rights —
Administratorhas them by default. - Outbound internet access: Windows Update talks to Microsoft's servers over HTTPS. Outbound traffic on an mHost VPS isn't restricted by a firewall by default, so most servers need no extra configuration for this.
- A free window for a restart — the server and anything running on it will be unreachable for a minute or two during the reboot.
Step 1. Check for and install updates
What to do next depends on the server's installation type. If you see a normal desktop and Start menu after logging in over RDP, you have Desktop Experience — use the first method below. If a console (PowerShell or sconfig) opens straight away instead of a desktop, you have Server Core — use the second method.
Through the Settings app (server with a desktop)
- Press Win + I, or open Start → Settings.
- Go to Update & Security → Windows Update.
- Click Check for updates.
📷 screenshot: the Windows Update page in the Settings app with the Check for updates button
- If updates are found, Windows downloads and installs them automatically — the status on the page changes to Downloading, then Installing. You don't need to wait for it to finish; you can minimize the window and keep working.
- If a restart is needed after installation, the page shows Pending restart — move on to Step 2.
Through sconfig (Server Core, no desktop)
Server Core has no graphical Windows Update — updates go through the built-in text tool sconfig, which starting with Windows Server 2022 launches automatically right after sign-in. On older versions (2012 R2/2016/2019), open it manually:
sconfig- From the main menu, type
5and press Enter — this opens the update mode setting:A(Automatic — the server checks for and installs updates on its own every day at 3:00 AM server time),D(Download only — updates are downloaded automatically but installed only manually; the default mode) orM(Manual — the server doesn't check for updates on its own at all). - To install updates right now — regardless of the mode you picked — type
6and press Enter to open Install updates. Pick a search category:1for all quality and security updates,2for Microsoft-recommended updates only,3for feature updates (not needed for routine patching). - After the search, sconfig lists the updates it found. Type
Aand press Enter to install all of them,Sto pick a specific update by number, orNto install none of them.
📷 screenshot: the sconfig main menu with the Update setting and Install updates entries
Get-HotFix | Sort-Object InstalledOnStep 2. Restart the server safely
Most security updates need a restart to take effect — until then, the changed files just sit alongside the old ones, and the server keeps running the previous, vulnerable version. You can restart the server with any of three equivalent methods.
Through Settings: if a Restart now button appeared on the Windows Update page, click it right away, or pick Schedule the restart and set a convenient time — for example, overnight, outside business hours.
📷 screenshot: the Windows Update notification with Restart now and Schedule the restart buttons
Through sconfig: from the main menu, type 13 and press Enter, then confirm with Y.
From the command line or PowerShell (works the same way on both Desktop Experience and Server Core):
shutdown /r /t 60 /c "Restart after installing Windows updates"Or the same result through the PowerShell cmdlet:
Restart-Computer/t 60 gives you 60 seconds to save your work — including for other admins, if any are connected right now — before the server restarts.
On Server Core, where there's no Action Center notification, you can check whether the server is waiting on a restart like this:
Test-Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\RebootPending"True means a restart is needed.
Step 3. Configure update behavior
By default, Windows Update decides on its own when to download and when to install updates. You can tune this more precisely — through the GUI, or, for Server Core or centralized management of several servers, through Local Group Policy or the registry.
Through Settings → Advanced options
- On the Windows Update page, open Advanced options.
- Active hours — the hours during which the server shouldn't auto-restart after installing updates. Set this to the period when you expect load on the server (for example, your business's working hours) — outside of it, Windows will restart on its own if needed.
- Pause updates — a button on the main Windows Update page that delays installing new updates for a chosen period (typically in weeks, up to 35 days total). Once the pause expires, Windows resumes checking for and installing updates as usual.
📷 screenshot: the Advanced options page with the Active hours setting
Through Local Group Policy or the registry
For Server Core (which has no graphical policy editor) or when you want a more precise, reproducible setup, configure the behavior centrally.
Despite the name, the Local Group Policy Editor (gpedit.msc) works without an Active Directory domain — it edits the policies of this one server, not an entire organization. It's only available where there's a desktop (Desktop Experience); on Server Core, use the registry instead (below).
- Launch
gpedit.msc. - Go to Computer Configuration → Administrative Templates → Windows Components → Windows Update.
- Open the Configure Automatic Updates policy, enable it (Enabled), and pick a mode — the modes are explained below.
- Apply the policy immediately, without waiting for the scheduled Group Policy refresh:
gpupdate /force📷 screenshot: the Local Group Policy Editor window with the Configure Automatic Updates setting
What the Configure Automatic Updates modes mean:
- 2 — Notify for download and auto install — only notifies about updates it finds; an administrator has to start the download and install manually.
- 3 — Auto download and notify for install — downloads automatically, but only notifies about installing.
- 4 — Auto download and schedule the install — downloads and installs updates on a schedule (set right there, via the Scheduled install day/time fields) — essentially the same behavior as the Automatic mode in sconfig.
- 7 — Notify for install and notify for restart (Windows Server 2016 and later only) — downloads automatically, but only starts the install and the restart with your confirmation — nothing happens without an explicit click from the administrator. A good choice for a single server that you manage yourself.
For Server Core (or to set the same thing without a GUI), you can set the same parameters through the registry:
$path = "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU"
New-Item -Path $path -Force | Out-Null
New-ItemProperty -Path $path -Name "AUOptions" -Value 4 -PropertyType DWord -Force | Out-Null
New-ItemProperty -Path $path -Name "ScheduledInstallDay" -Value 0 -PropertyType DWord -Force | Out-Null
New-ItemProperty -Path $path -Name "ScheduledInstallTime" -Value 3 -PropertyType DWord -Force | Out-NullThis example turns on mode 4 (auto-download + scheduled install) with installs every day (ScheduledInstallDay 0) at 3 AM (ScheduledInstallTime 3) — that is, the same thing as the Automatic mode in sconfig, just set explicitly.
Active hours are set in a similar way, but under a different registry key — without the nested \AU:
$path = "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate"
New-Item -Path $path -Force | Out-Null
New-ItemProperty -Path $path -Name "SetActiveHours" -Value 1 -PropertyType DWord -Force | Out-Null
New-ItemProperty -Path $path -Name "ActiveHoursStart" -Value 9 -PropertyType DWord -Force | Out-Null
New-ItemProperty -Path $path -Name "ActiveHoursEnd" -Value 21 -PropertyType DWord -Force | Out-NullWhy staying patched matters
RDP port 3389 on mHost Windows servers is open by default — the server is visible on the internet and regularly gets swept by automated scans from bots looking specifically for vulnerable Windows versions. The gap between a patch being published and a working exploit showing up in attackers' hands has been shrinking steadily in recent years — it's often a matter of days.
A classic example of what delaying patches leads to is MS17-010, the SMB vulnerability Microsoft fixed in March 2017. Two months after the patch shipped, the WannaCry ransomware worm spread using it, infecting hundreds of thousands of computers worldwide within a few days — almost exclusively ones where the March update had never been installed. The patch had already been available for two months by the time the attack hit.
A reasonable balance is checking for and installing security updates manually at least once every one to two weeks (or setting up the automatic mode from Step 3 and trusting it), and taking a backup (Step 2 above) before installing large cumulative updates on an important production server, so recovering from a problem takes minutes instead of an hour of untangling a broken system. For a broader baseline security checklist, see "Basic VPS security checklist" — it's written for Linux, but the principles of keeping the system patched, restricting access, and watching open ports apply to a Windows server too.
What's next
Learn how to install additional software on the server through VMmanager 6's ready-made recipes — the article "Installing Google Chrome on a Windows server using a ready-made recipe" walks through this with a concrete example. If you haven't set up backups yet as a safety net before risky changes (including large updates) — keep in mind mHost VPS don't offer snapshots, so back up your important data outside the server ahead of time.