How to Configure Windows Server 2019 Server Core

Windows Server 2019 Server Core is a minimal installation option that omits the Windows graphical user interface (GUI), Internet Explorer, and many optional Windows components. The result is a smaller attack surface, lower memory and disk footprint, fewer required patches, and improved performance compared to the full Desktop Experience installation. Server Core is managed primarily through PowerShell, Server Manager on a remote machine, and Windows Admin Center. Microsoft recommends Server Core as the default installation option for most server workloads.

Installing Server Core

During Windows Server 2019 installation, on the “Which type of installation do you want?” screen, select “Windows Server 2019 Standard” or “Datacenter” without the “(Desktop Experience)” suffix. After installation, you are presented with a command prompt rather than the graphical desktop.

After first boot, configure the server using the Server Configuration tool (sconfig.cmd) which provides a text menu for basic settings, or use PowerShell directly.

# Launch the Server Configuration menu
sconfig

# Options in sconfig:
# 1 - Domain/Workgroup
# 2 - Computer Name
# 4 - Configure Remote Management
# 5 - Windows Update
# 6 - Download and install updates
# 7 - Remote Desktop (enable/disable)
# 8 - Network settings
# 9 - Date and Time
# 10 - Telemetry settings
# 11 - Windows Activation
# 12 - Log off user
# 13 - Restart server
# 14 - Shut down server
# 15 - Exit to command line

Initial Configuration with PowerShell

Configure core networking, computer name, and domain membership through PowerShell without using sconfig.

# Set a static IP address
New-NetIPAddress -InterfaceAlias "Ethernet" -IPAddress "192.168.1.50" -PrefixLength 24 -DefaultGateway "192.168.1.1"
Set-DnsClientServerAddress -InterfaceAlias "Ethernet" -ServerAddresses "192.168.1.10", "192.168.1.11"

# Rename the computer
Rename-Computer -NewName "CORESVR01" -Restart

# After restart, join the domain
$Credential = Get-Credential "CORPAdministrator"
Add-Computer -DomainName "corp.local" -Credential $Credential -Restart

Enabling Remote Management

Server Core is designed to be managed remotely. Enable WinRM (Windows Remote Management) for PowerShell remoting and Server Manager connections.

# Enable WinRM and PowerShell remoting
Enable-PSRemoting -Force

# Verify WinRM is running
Get-Service WinRM

# Configure Windows Firewall to allow remote management
Set-NetFirewallRule -DisplayGroup "Windows Remote Management" -Enabled True

# Enable Remote Desktop (if needed for occasional graphical admin)
Set-ItemProperty -Path "HKLM:SYSTEMCurrentControlSetControlTerminal Server" -Name "fDenyTSConnections" -Value 0
Enable-NetFirewallRule -DisplayGroup "Remote Desktop"

# Allow management from a specific management server
Set-Item WSMan:localhostClientTrustedHosts -Value "mgmt01.corp.local" -Force

Installing Windows Roles and Features

Install server roles on Server Core using PowerShell. Most roles that work on Desktop Experience also work on Server Core. Verify role availability on Server Core before planning deployments — a small number of roles (such as Desktop Experience features) are not available.

# Install the DNS Server role
Install-WindowsFeature -Name DNS -IncludeManagementTools

# Install DHCP Server
Install-WindowsFeature -Name DHCP -IncludeManagementTools

# Install the File Server role with deduplication
Install-WindowsFeature -Name FS-FileServer, FS-Data-Deduplication

# Install IIS web server without the Management Console (GUI management)
Install-WindowsFeature -Name Web-Server

# Install Hyper-V
Install-WindowsFeature -Name Hyper-V -IncludeManagementTools -Restart

# List all available features (useful to check what can be installed)
Get-WindowsFeature | Where-Object { $_.InstallState -ne "Installed" } | Select-Object Name, DisplayName

Managing Server Core Remotely with Server Manager

From a Windows Server 2019 Desktop Experience machine or a Windows 10/11 administrative workstation with RSAT installed, add the Server Core machine to Server Manager for remote role management.

# On the Server Core machine - ensure remote management is enabled
Configure-SMRemoting.exe -Enable

# On the management workstation - add Server Core to Server Manager
# Open Server Manager > Manage > Add Servers > DNS > type CORESVR01

# Check remote management status from Server Core
Get-ItemProperty -Path "HKLM:SOFTWAREMicrosoftServerManager" -Name "DoNotOpenServerManagerAtLogon"

Configuring Windows Firewall on Server Core

# View all firewall rules
Get-NetFirewallRule | Select-Object DisplayName, Enabled, Direction, Action | Where-Object { $_.Enabled -eq "True" }

# Allow specific application through firewall
New-NetFirewallRule -DisplayName "Custom App" -Direction Inbound -Protocol TCP -LocalPort 8080 -Action Allow

# Allow ICMP (ping)
New-NetFirewallRule -DisplayName "Allow ICMPv4" -Protocol ICMPv4 -IcmpType 8 -Direction Inbound -Action Allow

# Block all inbound except explicitly allowed rules
Set-NetFirewallProfile -Profile Domain, Public, Private -DefaultInboundAction Block -DefaultOutboundAction Allow

Configuring Windows Update on Server Core

# Configure Windows Update via PowerShell
# Install PSWindowsUpdate module
Install-Module PSWindowsUpdate -Force
Import-Module PSWindowsUpdate

# Get available updates
Get-WindowsUpdate

# Install all available updates automatically
Install-WindowsUpdate -AcceptAll -AutoReboot

# Configure automatic updates via registry
$WUPath = "HKLM:SOFTWAREPoliciesMicrosoftWindowsWindowsUpdateAU"
if (-not (Test-Path $WUPath)) { New-Item -Path $WUPath -Force }
Set-ItemProperty -Path $WUPath -Name "AUOptions" -Value 4  # Auto download and schedule install
Set-ItemProperty -Path $WUPath -Name "ScheduledInstallDay" -Value 0   # Every day
Set-ItemProperty -Path $WUPath -Name "ScheduledInstallTime" -Value 3  # 3 AM

Performance Advantages of Server Core

Server Core consumes approximately 1 to 2 GB less RAM than Desktop Experience on Windows Server 2019, with roughly 4 GB RAM used by a freshly installed Server Core compared to 5–6 GB for Desktop Experience. The smaller footprint means more RAM is available for workloads. The reduced attack surface eliminates vulnerabilities in Internet Explorer, Windows Explorer, and GUI components that have historically been common attack vectors. Microsoft security data shows that Server Core has roughly 30% fewer critical patches per year than Desktop Experience.

# Check current memory usage
Get-Counter "MemoryAvailable MBytes"

# View system summary
systeminfo | findstr /C:"Total Physical Memory" /C:"Available Physical Memory" /C:"OS Name"

# Check disk usage of Server Core installation
Get-PSDrive C | Select-Object Used, Free, @{Name="UsedGB"; Expression={ [math]::Round($_.Used/1GB,2) }}

Adding and Removing the GUI from Server Core

Windows Server 2019 does not support converting between Server Core and Desktop Experience after installation using Add/Remove Roles. The GUI must be selected at installation time. However, you can install the Server Graphical Shell on an existing Desktop Experience installation to remove the GUI selectively, or use the full reinstallation path to move from Core to Desktop Experience.

# Remove the Desktop Experience GUI from a full installation
# This converts Desktop Experience to Server Core (requires reboot)
Uninstall-WindowsFeature -Name Server-Gui-Shell, Server-Gui-Mgmt-Infra -Restart

# Check current installation type
Get-WindowsFeature -Name Server-Gui-Shell | Select-Object Name, InstallState

Conclusion

Windows Server 2019 Server Core provides a lean, secure, and efficient platform for server workloads. Initial configuration through sconfig or PowerShell, combined with remote management via WinRM, Server Manager, and Windows Admin Center, makes Server Core fully manageable without a local GUI. The reduced attack surface and lower resource consumption make Server Core the recommended deployment choice for production Windows Server 2019 workloads, particularly Hyper-V hosts, file servers, DNS and DHCP servers, and IIS web servers.