isoga - Fotolia
How to add the App Compatibility Feature on Demand to Server Core
Microsoft closed the functionality gap between Server Core and full desktop deployments with the App Compatibility feature, but will it entice admins to the GUI-less server?
Microsoft's App Compatibility Feature on Demand increases the number of applications that work with Server Core without adding the overhead costs, security risks or performance hits of a full Windows Server Desktop Experience.
A lack of application compatibility and management tools has prevented organizations from readily adopting Server Core. The App Compatibility Feature on Demand gives applications that depend on graphical components the binaries and packages they need to run on the minimal OS.
Before you start using the App Compatibility feature to bring greater functionality to Server Core, you must set up a Server Core deployment.
Why should you run Server Core?
Microsoft released the Server Core installation option with Windows Server 2008, and it persists today in Windows Server 2019. Server Core removes the Explorer GUI and uses a subset of the .NET Framework to increase the performance and security of the server. Servers with unnecessary features present a larger attack surface, and servers with less CPU and memory overhead can perform faster.
To ensure Server Core machines run as leanly as possible, you can use PowerShell to remove the underlying Windows server role and feature binaries from the server:
Get-WindowsFeature | Where-Object -FilterScript { $_.InstallState -eq 'Available' } | Remove-WindowsFeature -Remove
If you don't know how to manage servers without a GUI, you will not be able to use Server Core. Server Core has a text-based local administrative interface that you invoke with sconfig from the shell prompt.
Sconfig brings up a simple menu to perform basic server management, such as configuring TCP/IP or joining an Active Directory domain. You can manage remotely with PowerShell or use Windows Admin Center.
Windows Admin Center combines the functionality from Server Manager and the old Microsoft Management Consoles in a lightweight, browser-based console. You cannot install Admin Center on domain controllers, and it doesn't include every management capability.
You can also use Remote Server Administration Tools on Windows 10 management workstations to get the Microsoft Management Consoles and PowerShell modules required to manage Windows Server with Desktop Experience and Server Core remotely.
Which servers can run Server Core?
Unless you have a compelling business or application need, you should deploy all new servers in the Server Core configuration. For existing servers running in Desktop Experience mode, you have three choices: Windows Server 2012 R2, Windows Server 2016 and Windows Server 2019.
In Windows Server 2016 and Windows Server 2019, you can only choose between Server Core and Desktop Experience during initial OS installation. Windows Server 2012 R2 gives you three UI experiences: Server with a full Explorer GUI, Minimal Server Interface and Server Core without GUI. In Windows Server 2012 R2, you can use the Install-WindowsFeature and Uninstall-WindowsFeature PowerShell cmdlets to switch among the different GUI layers. Microsoft removed that capability in Windows Server 2016 and Windows Server 2019, which means you must get your server OS installations right the first time or reinstall.
Deploy the App Compatibility Feature on Demand to better adapt Windows Server 2019 Server Core deployments to their application workloads.
Nano Server, an ultra-stripped-down Windows Server installation option in Windows Server 2016 and 2019, was originally slated to be Server Core's successor; however, compatibility problems led Microsoft to course-correct and support Nano Server only as a Docker container host server.
How to install App Compatibility Feature on Demand
Download the Windows Server 2019 Feature on Demand ISO image file from the Microsoft Evaluation Center or through your Visual Studio Online or Microsoft Developer Network web download portal.
Download the ISO file to a server -- named adVM in this example -- and share it in a directory named fodshare. From an elevated PowerShell console on Server Core box, run the following commands:
net use z: \\dc-01\fodshare
Mount-DiskImage -ImagePath Z:\Windows_InsiderPreview_ServerCoreAppCompatibility_17709.iso
DISM /Online /Add-Capability /CapabilityName:"ServerCore.AppCompatibility~~~~0.0.1.0" /Source:Z: /LimitAccess
Restart-Computer -Force
The net use command mounted the file share on the local Server Core box. The Mount-DiskImage cmdlet mounted the ISO locally. The DISM (Deployment Image Servicing and Management) command extracted the App Compatibility packages and installed them.
If you want Internet Explorer 11 available on the server, then run the DISM command:
Dism /online /add-package:Z:"Microsoft-Windows-InternetExplorer-Optional-Package~31bf3856ad364e35~amd64~~.cab"
Restart the Server Core box to complete the configuration.
If Server Core runs SQL Server, then you can run SQL Server Management Studio locally. Some GUI tools that run locally on Server Core with Features on Demand include Device Manager, Disk Management, Event Viewer, Failover Cluster Manager, File Explorer, Microsoft Management Console, Performance Monitor, Resource Monitor and Windows PowerShell.