Yes, you really need a reference Image, if not today, you will need it later. If you just deploy VM’s in an isolated environment, well in that case you might not, but for me testing is all about “Non Contoso” testing. What I mean is that I really need to play/test/learn how to run Windows Server 2016 in VM’s, as Hyper-V, with vendors software (like software from Dell, HP and such), so here it is, some kind of step by step guide to create a reference image for Windows Server 2016 TP4. There is a detailed description on how to create a reference image for Windows 10 on TechNet https://technet.microsoft.com/en-us/library/mt297533(v=vs.85).aspx.
MDT 2013 Update is not installed:
Download and Install the following:
ADK 10 – http://go.microsoft.com/fwlink/p/?LinkId=526740
MDT 2013 Update 1 – https://www.microsoft.com/en-us/download/details.aspx?id=48595
I usually have a dedicated “image factory” server/machine, but you can do this on basically any Windows computer running Windows 7 or above. If you are looking for an image factory, here is the story:http://deploymentbunny.com/2014/01/06/powershell-is-king-building-a-reference-image-factory/
MDT 2013 Update 1 is already installed:
Download the following:
Windows Server 2016 Technical Preview 4 – https://www.microsoft.com/en-us/evalcenter/evaluate-windows-server-technical-preview
Visual C++ – http://deploymentbunny.com/2014/08/05/powershell-is-king-download-all-vc-runtimes-using-a-script/
Mount the ISO and import the Operating System.
Import the VC++ runtimes as applications – http://deploymentbunny.com/2014/09/25/nice-to-havevb-script-wrapper-for-all-vc-installers-to-be-used-in-mdt/
Create a new Task Sequence for Windows Server 2016 Technical Preview 4 and perform the following modifications:
Add the product key
The product key is located on the media in the folder \Sources\pid.txt (It works with the Datacenter Edition, NOT the standard, don’t use standard for TP4)
Disable the Maps Broker
This step is actually an application that basically runs a PowerShell script that does disable the service, the reason for having a script is that it is easy to open script, modify, set conditions and similar things in a script, that way I don’t need to modify the task sequence when a change is needed. You can download the script here: https://github.com/DeploymentBunny/Files/blob/master/Tools/Configure%20-%20Disable%20Services%20for%20Windows%20Server/Configure-DisableServicesforWindowsServer.ps1
You then need to create an application in the workbench with the following settings:
Quit Install Command: PowerShell.exe -ExecutionPolicy Bypass -File Configure-DisableServicesforWindowsServer.ps1
The services currently makes no sense to have in a UI server and it does not start at all, so instead of having error in the Server Manager I rather disable the service. Of course you can disable the service in any other way, but I don’t like to have a long list of disable commands in the task sequence.
Add .NET framework 3.5.1 (includes 2.0)
A massive amount of server applications, toolkit, drivers does require .Net framework
Add VC++ runtimes
In the beginning of the post I explained how to download all VC++ and how to import an application that that installs all VC++
Basically every agent invented is written in C++ (it seams that way)
Cleanup before SysPrep
Currently the savings are not that great, but as a best practice I always try to make the image as small as possible to make it fast to deploy.
The story is here: http://deploymentbunny.com/2014/06/05/nice-to-know-get-rid-of-all-junk-before-sysprep-and-capture-when-creating-a-reference-image-in-mdt/:
You can add updates by downloading the from http://catalog.update.microsoft.com/v7/site/Search.aspx?q=KB3118754, this works when the number of update are small and the update is a .CAB file, but you should configure MDT to use a WSUS server in customsetings.ini, like this: