Saturday, April 21, 2012

Windows Server Core - CoreConfigurator to the rescue

At first look, developing a GUI utility for configuration of Windows Server Core might sound quite absurd. Alas, the whole point of Server Core is a cut down version of Server OS without the overhead of GUI and having some GUI tool to help you configure it would be like walking backwards.

Yet, if you look back at various blogs and articles, you will see that there is a repeating pattern: there is more-or-less predefined set of tasks that you need to do in order to get the installation of Server Core up and running (activation, IP and firewall configuration, domain join, feature installation, configuration of Remote Desktop and etc...). All the tasks are performed at command line, but there is no single utility/interface and for each task you need to know what command to use and what are the parameters required in order to complete the task.

For the IT veterans this will not be an issue, but being Core enthusiast I was also thinking about those that the steep learning curve of Server Core might scare them away and prevent them from enjoying the benefits Server Core brings with it. At this point the idea of developing a small GUI utility for basic configuration of Server Core was born. Well... that and the fact that my good friend Daniel Petri was sitting on my neck and promising a LOT of beer for writing a tool to do the basic configuration stuff (see his article about the tool here).

So here it goes: Daniel, thanks for pushing me to write the tool! Looks like people liked the idea.

Introducing CoreConfigurator


Product Activation

Configuration of display resolution

Clock and time zone configuration

Remote Desktop configuration

Management of local user accounts (creation, deletion, group membership, passwords)

Firewall configuration

WinRM configuration

IP configuration

Computer name and domain/workgroup membership

Installation of Server Core features/roles

After installing CoreConfigurator (supplied as MSI package), navigate to the folder where it has been installed and execute CoreConfigurator.exe

Tip: you do not actually need to install the application. The 4 files in the program's folder can be copied and used on other Server Core computers without installing the application)

The main screen:

Activation screen

Here you can view the current activation status, install the Product Key (in case you did not do that during the OS setup) and activate the server:

How it works: all the tasks in the background are achieved by calling slmgr.vbs script (part of the OS) with relevant arguments. Product Key installation is uses the "-ipk" switch and activation is using "-ato" switch.

Display Settings

Display Settings screen gives you an easy was of configuring the display resolution and "Show window content while dragging" feature that can improve the user experience quite a lot if the server is virtualized and you are working on it's console (notice that this is a per-user versus per-machine setting).

Time Zone

Clicking Time Zone button will bring the standard timedate.cpl control panel applet:

Remote Desktop

Clicking the RDP button will let you enable/disable Remote Administration connections (you still need to enable the relevant rules in the firewall. You can use the "Remote Administration" rule set in firewall configuration section or manually open the relevant rules using netsh.exe). In addition you can configure here the "Allow connections from previous versions of Windows":

Account Management

In this section you can easily create local user accounts, manage the account passwords and add/remove local accounts to local groups:


Managing firewall with command line is not always an easy task. The firewall section is here to help you configure the basic rules so that you will be able to at least connect and administer the server from a remote machine.

Warning: the tool will not display the current state of the already configured firewall rules. The fact is that figuring what rules are already configured is a very hard task and I was looking for a simple way to enable/disable some pre-configured rulesets.


Here you can enable/disable the WinRM. Enabling WinRM is equivalent to running "winrm -quickconfig". Disabling the WinRM will delete the WinRM listener:


The Networking section is very similar to IP settings dialog you have in GUI-capable Windows versions:

Computer Name

In this section you can rename the computer and join it to a domain/workgroup:


Here you can install/uninstall various Server Core features.

Warning: Figuring out what features are already installed turned out to be not an easy task. The new WMI Win32_ServerFeature class has some limitations that result in feature list being refreshed only after reboot. This means that if you install a specific feature and query Win32_ServerFeature, you will not see the new feature untill you reboot.(I have been pinged by MSFT folks about this and it looks I was partially wrong. We are currently having a discussion about this WMI class - if I get any news, I'll update the post. Nice to know that there are people there that care about things like this. Thanks Ashish !) The limitations made me go a slightly different route: I am parsing the output of oclist.exe. The downside is that some IIS features after being installed do not show up as installed in the output of oclist.exe. If you want to make sure the specific IIS feature has been installed, look at the event logs. If you know a better way to query in real-time for the list of the installed features, please contact me.

Download CoreConfigurator now !