Last week Microsoft released Windows Server 2016 to the public and at the weekend Microsoft released the Nano Server Image Builder. I already wrote a few blog posts how you can create new Nano Server Images using PowerShell. The Nano Server Image Builder is a UI based wizard to create new Nano Server Images. The Nano Server Image Builder helps you create a custom Nano Server image and bootable USB media with a graphical interface. Based on the inputs you provide, it generates images for deployment and it also creates reusable PowerShell scripts that allow you to create installations of Nano Server.

The Nano Server Image Builder can help you with the following tasks:

Graphical UI to create Nano Server Images

Adding drivers

Choose Windows Server Edition

Adding roles and features

Adding drivers

Adding updates

Configuration of Network Settings

Configuration of Domain settings

Set Remoting Options

Create an ISO file to boot from DVD or BMC (remote connection like HP ILO)

First download and install the Windows Assessment and Deployment Kit (ADK) and the Nano Server Image Builder.

Last week Microsoft released Windows Server 2016 with the first GA release of Nano Server. A couple of months back I already wrote a blog post how you can create a new Nano Server Image in Technical Preview 4. This post is an updated version of that this post using Windows Server 2016 GA. In this post I will quickly show you how you can create a new VHD, VHDX or WIM file with your Nano Server configuration.

If you for example don’t have System Center Virtual Machine Manager or another tool to create Virtual Machine Templates and automate the deployment, you can also do this using Sysprep, PowerShell and an unattend.xml file to automate or simplify the Virtual Machine creation process. In other blog posts I already wrote how you can sysprep Virtual Machines or how you can create Hyper-V Virtual Machines using PowerShell. In this post I will show you how you can add an unattend.xml file to your VHD or VHDX so your virtual machine gets some default settings like regional information.

Here we have a basic unattend.xml file. If you want to enhance it, or create your own, you can also use the Windows ADK.

To use this unattend.xml you first have to sysprep a virtual machine and create a sysprep VHD file. After that you can mount the VHDX file and insert the unattend.xml file to the VHD. Copy the unattend.xml file to the following location: D:\Windows\Panther (in my case the VHD was mounted as D drive).

For using the same system image for different virtual machines or physical computer, Microsoft created a tool called sysprep.exe. This blog post covers Most people should be already familiar with that tool. If not here is the description:

Sysprep prepares a Windows installation (Windows client and Windows Server) for imaging, allowing you to capture a customized installation. Sysprep removes PC-specific information from a Windows installation, “generalizing” the installation so it can be reused on different PCs. With Sysprep you can configre the PC to boot to audit mode, where you can make additional changes or updates to your image. Or, you can configure Windows to boot to the Out-of-Box Experience (OOBE).

This is great so you can sysprep a virtual machine copy the VHD or VHDX file and use it for the first boot of different VMs. In Windows Server 2012 and Windows 8, Microsoft added an addition to sysprep called the mode switch “/mode:vm”. The mode:vm switch allows you to identify the Windows as a Virtual Machine and sysprep.exe will generalize a Virtual Hard Disk (VHD or VHDX) so that you can deploy the VHD as a VHD on the same Virtual Machine (VM) or hypervisor. You must deploy the VHD on a Virtual Machine (VM) or hypervisor with the same hardware profile. For example, if you created VHD in Microsoft Hyper-V, you can only deploy your VHD to Microsoft Hyper-V VMs with a matching hardware profile, and you can only run VM mode from inside a VM.

This will boost the performance and time for the virtual machine for the first startup and installation. This also work of course with virtual machines running on other hypervisors such as VMware or Xen.

Run the following command inside the Virtual Machine (You find sysprep.exe in the C:\Windows\System32\Sysprep folder):

Last week Microsoft released Windows Server 2016 Technical Preview 4, which includes a lot of changes and fixes. Since I had some presentations on Nano Server in the past weeks I will quickly cover how you can create a Nano Server VHD or VHDX file.

If you download the ISO with Windows Server 2016 ISO you and mount this file you can see a folder called Nano Server. In this folder you can find the NanoServer.wim file and some PowerShell scripts as well as a folder called Packages, which includes the features, roles, driver and agents for Nano Server.

I usually copy all the PowerShell scripts (and the new module) to C:\NanoServer, even if you don’t have to, but it makes it easier for me.

If you have a look at the Packages folder you can find all the available packages for Nano Server:

Now to create a new Nano Server VHD file you can use the following steps:

First go to the directory where you stored the PowerShell files, for me this would be C:\NanoServer

Import the PowerShell Module and use the command to create a new Nano Server Image

This will create a new Nano Server Image including the VM Guest drivers and nothing more. The D:\ drive still is the Windows Server Image (ISO), the Base folder is used to mount and create the temporary files and the TargetPath is where you can find the finished VHDX file. You can now create a new Virtual Machine using this VHD file.

If you are working with System Center Virtual Machine Manager and you want to export and import your existing VM or Service Templates. I have a customer scenario where we have two VMM installations. They are using System Center Virtual Machine Manager, Orchestrator, Serivce Manager to deploy new customer environments for their premium SaaS (Software as a Service) hosting solution where they deploy Lync, Exchange and SharePoint fully automated. Here we have a development environment where they test new System Center Orchestrator Runbooks and new Templates in Virtual Machine Manager. After they have a working RunBook with working Templates they export the templates from the dev VMM and import them in the production environment. Because I was surprise how great this works and I think not a lot of people know about this feature, I created this short step-by-step guide.

Export Templates from Virtual Machine Manager

First select the Templates you want to export and click on the Export button on the Ribbon bar. You can also do a multiple select to export multiple templates.

You can than configure the export, with a location, password.

You can also select what physical resources which should be exported with the template. For example if you are using the same VHD or VHDX for multiple templates you may want to export this resource only once to save some space.

The export will look kind of like this. The XML files are the templates with the configurations, and in the folders are the physical resources like VHDs, XMLs or other stuff.

Import Templates in Virtual Machine Manager

To import a template just select the exported XML file.

You can change or setup the resource of the template, for example you can select an already existing VHD from your Library or an already existing Run As account.

And you can set the location for the new imported resources (VHDs,…)

I hope this shows you how easy an export and import of a Service or VM Template from System Center Virtual Machine Manager is. I like especially how SCVMM handles the additional resources, so you don’t have to import the same VHD every time and you can change Run As accounts very easily.

Follow Me

About

My name is Thomas Maurer. I am a Senior Cloud Advocate at Microsoft. I am part of the Azure engineering team and engage with the community and customers around the world. I am located in Switzerland. I am focusing on Microsoft technologies, especially cloud and datacenter solutions based on Microsoft Azure, Azure Stack and Windows Server. Opinions are my own.