Server Core vs Desktop Experience
Server Core and Server with Desktop Experience are two separate installation images chosen once at setup, not two modes you can flip between later, so picking the wrong one on a production server means a clean reinstall rather than a quick feature toggle.
Minimal, command-line install — PowerShell, SConfig, and cmd — with the smallest disk footprint and attack surface.
The full graphical install — Explorer, Server Manager, MMC snap-ins, and every local management tool.
An optional Feature on Demand that adds select MMC tools to Core without installing the full shell.
What Is Server Core?
Server Core is a minimal installation option for Windows Server Standard or Datacenter that leaves out the desktop shell and most graphical management tools, so a much smaller set of binaries is left doing the same job of running roles and services. Think of it as ordering the server with the passenger seats removed: everything needed to actually do the work is still there, but the components that exist purely so a person can sit down and interact with the machine locally are gone.
Concretely, Server Core is built without four GUI shell packages — Microsoft-Windows-Server-Shell-Package, Microsoft-Windows-Server-Gui-Mgmt-Package, Microsoft-Windows-Server-Gui-RSAT-Package, and Microsoft-Windows-Cortana-PAL-Desktop-Package. There is no desktop by design, no accessibility tools, no out-of-box experience, and no audio support. A Hyper-V host is the textbook case for why this is useful: you can manage virtually every aspect of Hyper-V from PowerShell or remotely through Hyper-V Manager, so the GUI a Desktop Experience install would otherwise carry is pure unused surface area.
What Desktop Experience Adds
Server with Desktop Experience installs the standard Windows graphical user interface and all of the tools that come with it, including the ones aimed at client-style experiences rather than server administration. services.msc, eventvwr.msc, diskmgmt.msc, Server Manager, Windows Explorer, and the Windows Update GUI are all present locally, along with Windows Push Notification services and full accessibility support.
Almost everything Desktop Experience adds locally can still be reached against a Server Core box remotely — from a Windows client running Remote Server Administration Tools (RSAT), or from Windows Admin Center — so “Core can’t do X” is usually really “Core can’t do X from its own console.” The trade-off is that Desktop Experience installs all of it regardless of whether the server’s role needs it, which is exactly the surface Server Core exists to cut away.
Footprint and Attack Surface
| Aspect | Server Core | Server with Desktop Experience |
|---|---|---|
| User interface | Command line only — PowerShell, SConfig, cmd | Standard Windows GUI |
| Disk space | Smaller requirement | Larger requirement |
| Install/configure roles locally | PowerShell only | Server Manager or PowerShell |
| Roles and features | Some aren’t available; select ones can be added via the App Compatibility FOD | All roles and features available |
| Microsoft Management Console | Not installed by default | Installed |
| Remote management | Windows Admin Center, RSAT, Server Manager, PowerShell | Same tools, same coverage |
| Potential attack surface | Greatly reduced | No reduction |
The attack-surface difference is not marketing language — it comes directly from having a smaller code base installed and patched on the box. Fewer installed components means fewer things Windows Update has to service, fewer processes that could carry a vulnerability, and a shorter list of what an attacker who lands a foothold can actually pivot through locally.
Why You Can’t Convert Between Them
This is the detail that catches teams who last touched Windows Server before 2016: on current releases, Server Core and Server with Desktop Experience cannot be converted into each other after installation. Microsoft’s own documentation states it plainly — “unlike some previous releases of Windows Server, you can’t convert between Server Core and Server with Desktop Experience after installation. You’ll need to do a clean installation if you later decide to use a different option.”
That “unlike some previous releases” matters. On Windows Server 2012 R2, the GUI shell was itself a removable feature (Server-Gui-Shell), and administrators genuinely did add or strip it after the fact. That capability was removed starting with Windows Server 2016, when Microsoft’s own migration guidance for customers moving to 2016 called out explicitly that you could no longer “move” between a Core and a Desktop Experience install. Every version since has kept that restriction.
Closing the Gap: Server Core App Compatibility FOD
Starting with Windows Server 2019, the Server Core App Compatibility Feature on Demand (FOD) narrows the gap without turning Core into Desktop Experience. It’s a package of select binaries pulled from the Desktop Experience install option — mainly MMC snap-ins — that installs only onto an existing Server Core system to help with administration and acute troubleshooting.
| Component | Filename | First Available |
|---|---|---|
| Device Manager | devmgmt.msc | Windows Server 2019 |
| Disk Management | diskmgmt.msc | Windows Server 2019 |
| Event Viewer | eventvwr.msc | Windows Server 2019 |
| Failover Cluster Manager | cluadmin.msc | Windows Server 2019 |
| File Explorer | explorer.exe | Windows Server 2019 |
| Microsoft Management Console | mmc.exe | Windows Server 2019 |
| Performance Monitor | perfmon.exe | Windows Server 2019 |
| Resource Monitor | resmon.exe | Windows Server 2019 |
| PowerShell ISE | powershell_ise.exe | Windows Server 2019 |
| Hyper-V Manager | virtmgmt.msc | Windows Server 2022 |
| Task Scheduler | taskschd.msc | Windows Server 2022 |
# From an elevated PowerShell prompt on the Server Core box (exit SConfig with option 15 first)
# Install the App Compatibility FOD from Windows Update
Add-WindowsCapability -Online -Name "ServerCore.AppCompatibility~~~~0.0.1.0"
# Restart to apply, then install the latest updates
Restart-Computer
The FOD can only be added to Server Core — attempting it on a Desktop Experience install isn’t supported — and after the restart the console window’s frame changes to a different shade of blue as a visual confirmation it’s installed. It also doesn’t survive an in-place OS upgrade unless it was baked into a custom install image (WIM) beforehand; otherwise it has to be reinstalled after the upgrade completes.
Managing Server Core: SConfig, PowerShell, and Windows Admin Center
SConfig is the primary local tool for a freshly installed Server Core box — network configuration, domain or workgroup membership, Windows Update settings, Remote Desktop, and activation are all reachable from its numbered menu. Starting with Windows Server 2022, SConfig launches automatically in a PowerShell window as soon as you sign in; on Windows Server 2019 and 2016 you launch it by typing SConfig at the prompt. It only works from a local console sign-in or a Remote Desktop session — it cannot be run inside a remote PowerShell session.
# Launch SConfig manually (Windows Server 2019/2016, or if AutoLaunch is off)
SConfig
# Stop SConfig from auto-launching on sign-in (Windows Server 2022 and later)
Set-SConfig -AutoLaunch $False
# From the SConfig main menu: option 4 enables/disables remote management
# (PowerShell remoting, Windows Admin Center, and certain MMC snap-ins),
# option 8 sets network configuration, option 15 exits to a PowerShell prompt
For day-to-day fleet management, PowerShell Remoting is the workhorse on both install options. That’s a large enough topic on its own — WinRM’s transport, when to reach for Enter-PSSession versus Invoke-Command, and the double-hop problem are all covered in the dedicated PowerShell Remoting and WinRM post. Windows Admin Center is the browser-based, GUI-driven complement to that: a free gateway you install once and use to manage servers, clusters, and hyperconverged infrastructure through a modernised Server Manager-like interface, without needing a desktop shell on the managed server at all. It works identically against Core and Desktop Experience targets, which is precisely why it’s the recommended way to get GUI-style management back on a fleet of Core servers instead of adding the App Compatibility FOD everywhere.
Installing Roles and Features
The Server Core versus Desktop Experience choice happens once, in the Windows Setup wizard, where the edition list splits into four options: Windows Server Standard, Windows Server Standard with Desktop Experience, Windows Server Datacenter, and Windows Server Datacenter with Desktop Experience — anything without “Desktop Experience” in the name is the Server Core install. Once the OS is up, adding roles and features to either one uses the same Install-WindowsFeature cmdlet, but its footprint differs by install option: on Server Core, -IncludeManagementTools only pulls in a role’s PowerShell module, not any GUI console, because there’s no MMC host to run one in without the App Compatibility FOD.
# Install a role and its management tools on the local server
Install-WindowsFeature -Name Web-Server -IncludeAllSubFeature -IncludeManagementTools
# Preview what a role installation would do without applying it
Install-WindowsFeature -Name Web-Server -IncludeAllSubFeature -WhatIf
# Install a role remotely against a named Server Core target
Install-WindowsFeature -Name Web-Server -IncludeManagementTools -ComputerName CORE-WEB01 -Credential (Get-Credential)
# List every role and feature currently installed
Get-WindowsFeature | Where-Object { $_.Installed }
Server Manager’s Add Roles and Features Wizard can target a remote Server Core server from a Desktop Experience machine or a management workstation running RSAT just as easily as it targets the local server, which is the normal way most shops manage Core fleets without ever signing in to one interactively.
Gotchas and Best Practices
Don’t assume a familiar tool exists on Core. PowerShell ISE, Internet Explorer, Windows Explorer, and most .msc consoles simply aren’t there without the App Compatibility FOD — check the feature-availability table before promising a colleague they can “just open” something locally.
The FOD is a bridge, not a Desktop Experience install. It adds specific troubleshooting and administration binaries; it does not add the shell, Server Manager, or the rest of what a genuine Desktop Experience install ships. If a workload actually needs the full GUI day to day, that’s a sign the box should have been built as Desktop Experience in the first place.
Match the install option to the role, not to habit. Domain controllers, Hyper-V hosts, and IIS or SQL Server instances that don’t depend on a GUI-only management console are the classic Server Core candidates — the reduced footprint and attack surface pay off continuously over the server’s life. Desktop Experience earns its larger footprint when a workload genuinely needs local GUI tools, third-party software with no headless install path, or frequent interactive troubleshooting that remote tools don’t comfortably cover.
Troubleshooting Cheat Sheet
| Symptom | Likely Cause | Fix |
|---|---|---|
| SConfig doesn’t appear after signing in to a Server Core box | AutoLaunch was disabled, or this is Windows Server 2019/2016 where SConfig never auto-starts. | Type SConfig at the PowerShell prompt; re-enable auto-launch on 2022+ with Set-SConfig -AutoLaunch $True. |
| SConfig hangs or fails inside a remote PowerShell session | SConfig only supports a local console sign-in or Remote Desktop session, not remote PS Remoting. | Connect over RDP or sit at the console; for scripted remote management use targeted cmdlets or Windows Admin Center instead. |
-IncludeManagementTools was used but the MMC console still won’t open locally |
On Server Core, that switch only installs the role’s PowerShell module — mmc.exe itself isn’t present without the App Compatibility FOD. |
Install the FOD with Add-WindowsCapability -Online -Name "ServerCore.AppCompatibility~~~~0.0.1.0", or manage the role from Server Manager/RSAT on another machine. |
| Someone wants to “just add the desktop” to a live production Core server | Expectation carried over from Windows Server 2012 R2, where the GUI shell was a removable feature. | There is no supported feature add for the shell since Windows Server 2016; plan and schedule a clean Desktop Experience installation instead. |
| App Compatibility FOD tools disappeared after an in-place upgrade | The FOD does not persist through an in-place OS upgrade. | Reinstall the FOD after the upgrade completes, or bake it into the custom WIM image used for future deployments. |
| Remote management tools (Windows Admin Center, RSAT) can’t reach a Core server | Remote management was disabled in SConfig, or the server sits outside the trusted network scope it defaults to. | From the SConfig main menu, use option 4 to re-enable remote management, or set it directly with the relevant PowerShell remoting cmdlets. |
Final Thoughts
Server Core and Desktop Experience aren’t really a spectrum with a dial in the middle — they’re two different install images that happen to share the same underlying operating system and the same role and feature set once you account for what Core deliberately leaves out. Choosing between them is a design decision made once, at deployment time, based on whether a box needs a local GUI at all.
Get that decision right up front by asking one question honestly: will anyone ever need to sit at this server’s own console and use a graphical tool? If the answer is no — and for domain controllers, Hyper-V hosts, and most IIS or SQL instances it usually is — Server Core plus Windows Admin Center or RSAT for the occasional GUI need is the lower-risk, lower-maintenance choice. If the answer is yes, build it as Desktop Experience from the start, because there’s no supported way back once the box is live.
Hyper-V hosts are one of the clearest Server Core use cases mentioned throughout this post — Hyper-V Basics covers generations, virtual switches, and checkpoints for exactly that kind of deployment.