Now that our VM is created, we will install VMware Tools, upgrade the Hardware Version, and make some helpful Windows changes. If you are going to use the BGinfo program, please make sure you go and download that.
Finishing VMware Changes and Configuring the OS
- First thing we need to do is upgrade the VMware Tools on the machine. This will install critical drivers for both Network and Video and will make for a better all-around experience. Select your VM and then click “Guest” and then “Install/Upgrade VMware Tools”.
- Click “OK” on the window that comes up.
- Go back to your console screen for the VM and you should see the D: drive change to “VMware Tools”. Double click this to start the install.
- Click “Next” on the tools welcome screen.
- I used to do a custom install and removed the shared folders, but from all my reading I don’t think this is needed anymore. Choose the “Typical” radio button and then click “Next”.
- To continue with the install click “Install”.
- Click “Finish”.
- Click “No” when it asks for you to reboot.
- Instead we are going to Shut the VM down so that we can update the hardware. Select your VM in VMware then choose “VM” from the menu bar then “Power” and then “Shut Down Guest”.
- Once the VM is shut down, right click on it in vCenter Server and then choose “Upgrade Virtual Hardware”. The hardware version for the server will change to 9.
- Right click on the VM again and this time click on “Edit Settings”.
- Click the CD/DVD drive 1 and change the Device Type to “Client Device”.
- Click on the Floppy drive 1 and then click “Remove”.
- Click the “Options” tab and then click “Boot Options” check the box for “Force BIOS Setup”. Click “OK”.
- Power on the VM again using the “Power On” button.
- Arrow down to “Legacy Diskette A:” and hit the + key until is says “disabled”.
- Arrow to the right so that “Advanced” is highlighted. Then arrow down 4 times until “I/O Device Configuration” is highlighted and then press “Enter”. Go down the list changing “Serial port A:, Serial port B:, Parallel port:, and Floppy disk controller to “Disabled”.
- Press “ESC” twice and then press “Enter” to Exit Saving Changes. Press “Enter” again when it asks for confirmation.
- Logon using your administrator password that you created in part 1.
- I like to get the time right on the server before I do anything else. Do this by right clicking the time in the lower right corner and choose “Adjust date/time”. Click the “Change time zone” button. Make the appropriate change for your location and then click “OK”, and then “OK” again.
- The first thing I like to do is to rename the server and add it to the domain if needed (I try to not add it to the domain if I don’t have to). The Server Manager should open automatically for you. Click “Local Server” on the left side and then click the “Computer Name” Change the name, but you won’t be able to add it to the domain yet because it has not been IPed.
- Right click on the Network icon in the task bar and choose “Open Network and Sharing Center”.
- Click “Change adapter settings”.
- Click “Properties”.
- The default lists the following items.
- Click “QoS Packet Scheduler” and then click “Uninstall”. Do the same for both “Link-Layer Topology” items. QoS Packet Scheduler is not needed unless you are doing QoS at the Windows layer instead of the L2/L3 switch layer. Please read about Link Layer Topology here and determine if you want/need it in your environment – http://en.wikipedia.org/wiki/Link_Layer_Topology_Discovery
- Finally, uncheck “Internet Protocol Version 6 (TCP/IPv6). WARNING – DO NOT uninstall IPv6 as this might cause problems.
- The first thing we are going to do with Server Manager is to change its behavior on startup. Open up Server Manager if it is not already done. Click “Manage” and then click “Server Manager Properties”.
- Check the “Do not start Server Manager automatically at logon”.
- In Server Manager click on the “Internet Explorer Enhanced Security Configuration” and set both Administrators and Users to “Off”.
- Now we are going to add some important items to the desktop. From the main Server Manager Dashboard page click “Add roles and features”. Click “Next” on the Before you begin page, leave the radio button on “Role-based or feature based installation” and click “Next.
- On the Server Selection screen leave everything default and then click “Next”. Click “Next” again to bypass the Server Roles and move to “Features”.
- Expand both .NET Framework 3.5 and 4.5 and then check to have both installed.
- Next click the check box for “User Interface and Infrastructure”. This is going to allow us to add some missing desktop icons. Click “Add Features” when the required features window comes up.
- We use SNMP for server monitoring so I check the box for “SNMP Service” and then click “Add Features” when the required features window comes up, then click “Install”.
Right click on your desktop background and click “Personalize”. Click the “Change desktop icons” link and then check the boxes for “Computer, Recycle Bin, and Control Panel”.
- Right click on the Desktop again, and under “View”, set icon size to “Small”, and set Auto Arrange and Sort By options according to your preference.
- Right click the task bar and click “Properties”.
- Check the box “Use small taskbar buttons”.
- Click on the “Navigation” tab and then check the box “When I sign in or close all apps on a screen, go to the desktop instead of Start”. I also check the boxes “Show the Apps view automatically when I go to Start” and “Search everywhere instead of just my apps when I search from the Apps view”.
- Create a new folder on C: called BGInfo. Place all your BGinfo files into this folder. Edit the BGInfo.bgi file if you want to customize the BGinfo settings. Create a .bat file called bginfolaunch.bat in the BGinfo folder. I have included what I have in my batch file.
- Right click on the start button and choose “Run”. Then type Regedit in the open box.
- Adding the following entry into the registry will cause BGInfo to automatically refresh BGInfo every time you log onto the server. Add a reg key (string value) called BGInfo with the value of C:\BGInfo\bginfolaunch to HKLM\Software\Microsoft\Windows\CurrentVersion\Run.
- Right click on the start button again and this time choose “Control Panel”. Change the view to “Small Icons”. Click on “Power Options”.
- Change the power settings to “High performance”. And then click “Change plan settings”. Set both “Turn off the display” and “Put the computer to sleep” to “Never”.
- Right click on the Powershell icon and the select “Run as Administrator”. Type powercfg –h off and press “Enter”.
- Click “File Explorer” on the task bar. Click “View” then “Options” and then “Change folder and search options”
- Check “Display the full path in the title bar area” and click the radio button for “Show hidden files, folders, and drives”. Uncheck “Hide protected operating system files”.
- Right click the start button and click “Run”. Type gpedit.msc in the run box. When the group policy window comes up go to Computer Configuration/Windows Settings/Security Settings/Local Policies/Security Options. Set “User Account Control: Run all administrators in Admin Approval Mode” to disabled.
- Then change “User Account Control: Behavior of the elevation prompt for administrators” to Elevate without prompting.
The final thing is to include Logoff and Disk Manager Icons on the desktop. Create them and place them in C:\Users\Public\Desktop.
Great guide. But what about part 3, do you sysprep the OS before shutting it down, or do you just convert it to a template in VMware?
Nils, thanks for the reply.
What a great question. After the last step in part 2 I shut down the VM and convert it to a template. When you deploy a new VM from a template, VMware will sysprep the machine, and if you create a customization, you can set things like the IP. Would a part 3 where I deploy from a template be helpful?
For many people I think a Part 3 would be very much appreciated. I Your and other peoples experiences are always appreciated.
When I do this all my user customization dissapear because of sysprep. I used to do Copy to profile to default profile but this is not working anymore in Windows 2012
Yeah, that is the problem with 2012. I have not found a good way of having profile changes save for a default profile. The best I have been able to do is to create the admin account with the settings that I want so that it is the same every time that I do administrative tasks. I know that doesn’t help for all the other users that log into the server.
What about turning on Hot plug for CPU and mem on options tab?
Great question. I don’t usually check these in the template and here are my reasons.
1. I don’t want to make it too easy to ADD memory and CPU to servers. As VMware admins we all know how easy it is to throw hardware at a problem. If there are critical servers that don’t allow for downtime, I will configure hot plug.
2. One important thing to know is that if you turn on Hot Plug, it turns off vNUMA. See the KB here http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2040375 that will explain it. In reality, this should only be a problem in VMs that have a large number of vCPU (8+). A great article on this can be found here http://sqlperformance.com/2013/12/system-configuration/vmware-cpu-hot-plug-vnuma-effects-on-sql-server.
Most of the customizations aren’t surviving Sysprep. Run Once commands for Task bar and similar customizations are a challenge. Am I missing a step or is there another way to retain customizations?
Customization for the admin account that you are using should survive the sysprep process. Those customizations will not survive the sysprep process for other users though. Are you saying that they are not surviving for the admin account; and if so, please provide an example.
What about installing Windows Updates before the creation of the template? Can you do that before shutting it down and converting to template? Should save a lot of time having to install updates post template deployment?
Absolutely! I usually try to update my templates about once a month by converting them to a VM, run updates, and then convert back to a template. The other option is to use something like Microsoft SCCM to demploy Servers. The advantage here is that the deployed server is deployed with all the of the company approved updates.
Great article. I have seen a few other steps that I thought I would mention. You don’t have to include them, but I’d like to hear your thoughts on them.
1) Cleanup installed updates:
dism /online /cleanup-image /StartComponentCleanup /ResetBase
2) Disable Indexing on Local Disk (C:)
3) Defrag Local Disk (C:)
I also noticed on #26, you don’t mention removing “Microsoft Network Adapter Multiplexor Protocol”, but your screen shots show it removed. Not an issue, I just followed your screen shots even though you didn’t implicitly state to remove it.
Thanks again for the article!
Frank, thanks for the extra steps. I really need to take some time to revisit this. I think in my 2008 R2 template document I talk about disabling the indexing and doing the defrag, but I guess I missed that in this one!