Preparing a new server with Windows Server 2012 for development and testing

As a SharePoint developer, I am quite often required to set up new servers for development and testing. Every time I set up a new server, I do a basic configuration before I start installing the specific software I need (SQL Server, SharePoint, Visual Studio etc.). The purpose of doing these preparations is to enable a more desktop like user experience, and remove unnecessary interruptions in the day-to-day usage.

This guide is based on a Windows Server 2012 Standard GUI installation.

Basic settings in Server Manager

After the initial installation and first time password setup is complete, continue in the Server Manager by setting these basic settings to get started. Select Local Server in the left side menu.

  1. Change computer name (postpone reboot to later)
  2. Enable automatic windows update (and start first time check)
  3. Disable IE Enhanced Security (for all users)
  4. Change timezone

server-manager-overview

Add "Desktop Experience" role

This feature adds some settings and software to make the server feel more like a standard Windows 8 end-user computer.

In the Server Manager select Manage and Add Roles and Features.

server-maanager-add-role

In the wizard, select Next until you reach the Feature step. Locate User interfaces and infrastructure and expand it. Check the option for Desktop Experience.

server-manager-desktop-expereince

Enable remote desktop connections

All my installation are mostly on virtual hosts, so getting Remote Desktop up and running is a much better experience than the build in console in for example Hyper-V.

Under Settings (search for the words), select Allow remote access to your computer.

remote-desktop-allow-users

Then select Allow remote connections to the computer.

remote-desktop-allow-users2

Disable password expiry

Disabling these policies is not a good idea in general, but in a development environment, this is necessary to avoid hassle with Windows nagging about setting new passwords from time to time. I always use a general password for these environments, and want to avoid it being changed somewhere.

Open Group Policy Management (just search for it). Right click on Default Domain Policy and select Edit.

disable-password-policy-1

Open the path Computer Configuration -> Policies -> Windows Settings -> Security Settings -> Account Policies -> Password Policy.

disable-password-policy-2

Set Enforce password history and Maximum password age to 0. Disable the Password must meet complexity requirements.

Disable shutdown event tracker

The shutdown event tracker is fine for a server, but is unnecessary on a development machine.

disable-shutdown-event-tracker-3

Open Group Policy Management (just search for it). Right click on Default Domain Policy and select Edit.

disable-shutdown-event-tracker-1

Open the path Computer Configuration -> Policies -> Administrative Templates -> System. Select Display Shutdown Event Tracker.

Select Disabled to avoid this dialogue to appear the next time you shut down the server.

Enable execution policy for PowerShell

By default PowerShell script are disabled from being executed, and a policy setting must be set.

Open a PowerShell Console (as Administrator) and type Set-ExecutionPolicy -ExecutionPolicy RemoteSigned

powershell-set-executionpolicy

Also just as a remined make sure that script you try to execute aren't blocked. Check this by right clicking the file, select Settings and check if the button Unblock appear in the bottom right of the dialoge.

Disable Loopback check with PowerShell

This is mainly for servers that will be used for hosting web applications with IIS. For more details see: http://support.microsoft.com/kb/896861

Open a PowerShell Console (as Administrator) and type New-ItemProperty HKLM:\System\CurrentControlSet\Control\Lsa -Name "DisableLoopbackCheck" -Value "1" -PropertyType dword

powershell-disable-loopback-check

A reboot will be necessary for this setting to take effect.

Summary

In this article a step-by-step guidance for preparing a Windows Server 2012 for development and testing use were presented. This enables a better user experience when working in a server environment on the day to day basis.

Just as a disclaimer, these steps reduce the general security level normally required on a server, and should only be used for development and testing purposes.

Any tips that could be included in this preparation guide, are welcome!