Windows Distribution System (WDS) unattended

Let’s say this is the era of Windows 7 now so I’ve run into WDS to deploy “polished” images, although Windows 8.1 is out, seems it’s a bit too much for many people (price/metro). When I worked at Signon IT we were using nLite and WPIW for Windows XP and that worked great. Slim and fast installation, stripped all the crap out of Windows XP did miracles.

Unfortunately, there is no W7lite, at least not yet, but nuhi/nLite is apparently working on it. Until then, let me explain you how to use WDS on Windows Server 2008, well this is what we have in our company now, but I think you can use Windows Server 2012, it should be the same.

In one day I usually have to deploy two to five computers with Windows 7 so we are using WDS for that so we don’t have to spend 923904 hours clicking and setting same stuff over and over. Machines should do the hard work for you so you can watch Youtube, check Facebook/G+, Twitter or some other modern crap.

Here is what you need to deploy one image to multiple different computers, eg. intel/amd but of course you can’t deploy 64bit image on a 32bit PC!

 

Requirements:

PC/VM with Windows Server 2008 SP1 or 2012

– PC/VM with tweaked Windows 7 Home/Pro/Ult (install your favorite apps, but install on ONLY one partition!)

AIK

Windows 7 SP1 DVD/ISO

Copy profile tool

 

Windows Server

– install your server with next, next, next,… and update all fixes with automatic updates

– for example I’ll use “pojwir.lan” domain name, hogar is hostname, and 10.111.0.5 as IP adress, 10.111.0.100 – 10.111.0.110 will be DHCP range, administrator is username, password adminpass

– pick AD role, install, restart, pick DNS, DHCP, restart, pick WDS, restart, I hope you are familiar with DNS and DHCP configuration

– open WDS and adjust it to your needs, here are my settings (hover image to see description)

WDS properties

01_wds_properties_general
General settings
02_wds_properties_pxe_response
I want WDS to respond to any computer request.
03_wds_properties_ad_ds
Domain related.
04_wds_properties_boot
Since I already have another DHCP on my 10.111.0.0 network I decided to disable booting to network until F12 is pressed.
05_wds_properties_client
I already have Unattend.xml file so I’m using it for Windows PE. Also don’t want computer to auto join to domain since I have few domains. Enable logging so you can inspect installation in Event viewer.
06_wds_properties_dhcp
Turn this on to enable network booting.
07_wds_properties_multicast
IP pool on DHCP must be configured and active.
08_wds_properties_advanced
DHCP must be authorized, to authorize DHCP server. Open Administrative Tools then DHCP and click Action, then Manage Authorized servers.
09_wds_properties_network
Network.

– if you encounter any error while saving WDS settings it is probably related to DHCP, I suggest you to remove DHCP role and add it again, at least I had that problem few times. Didn’t find a solution on Internet but figured that DHCP is the problem.

Adding/Creating Boot Image in WDS

Prepare your Windows 7 DVD/ISO file for this, if you have DVD insert it, if you have ISO mount it or extract it somewhere with 7zip, in my example ISO is extracted on F:\ drive.

In WDS right click Boot Images, then select Add Boot Image…

Add Boot Image

Browse

Now Browse… to location where you extracted ISO file and open sources directory:

Browse sources

Select boot.wim file:

Select boot.wim

 boot.wim selected

Click Next > and adjust image name and description to your needs, I’ve named them both Windows 7 64bit.

Then click Next > twice, then Finish and you are done with adding boot image!

 

Adding/Creating Capture Image in WDS

In WDS click on Boot Images directory

Select Boot Images

then in the left window pane, right click your Boot Image, mine is called Windows 7 64bit and select Create Capture Image:

Right click your Boot Image

Name your capture image, and give description, in mine case it is Windows 7 64bit capture and Browse… to C:\RemoteInstall\Boot\X64\Images\ (for 64 bit of course) and name it as you wish, in our example it’s capture.wim:

Capture Image name and location

Browse boot.wim

Click Next > and wait until it’s done than press Finish.

 

 

 unattended.xml

My unattended.xml sample will create three partitions on first disk, 100 MB labeled “System” for boot without drive letter, 64 GB labeled “Windows” with drive letter C:\ and the rest goes to D:\ labeled “User”.

<?xml version="1.0" encoding="utf-8"?>
<unattend xmlns="urn:schemas-microsoft-com:unattend">
 <settings pass="windowsPE">
 <component name="Microsoft-Windows-International-Core-WinPE" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 <SetupUILanguage>
 <UILanguage>hr-HR</UILanguage>
 </SetupUILanguage>
 <UILanguage>hr-HR</UILanguage>
 <UILanguageFallback>en-US</UILanguageFallback>
 </component>
 <component name="Microsoft-Windows-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 <DiskConfiguration>
 <Disk wcm:action="add">
 <CreatePartitions>
 <CreatePartition wcm:action="add">
 <Size>100</Size>
 <Type>Primary</Type>
 <Order>1</Order>
 </CreatePartition>
 <CreatePartition wcm:action="add">
 <Order>2</Order>
 <Size>65536</Size>
 <Type>Primary</Type>
 </CreatePartition>
 <CreatePartition wcm:action="add">
 <Order>3</Order>
 <Type>Primary</Type>
 <Extend>true</Extend>
 </CreatePartition>
 </CreatePartitions>
 <ModifyPartitions>
 <ModifyPartition wcm:action="add">
 <Active>true</Active>
 <Format>NTFS</Format>
 <Label>System</Label>
 <Letter>Z</Letter>
 <Order>1</Order>
 <PartitionID>1</PartitionID>
 </ModifyPartition>
 <ModifyPartition wcm:action="add">
 <Order>2</Order>
 <PartitionID>2</PartitionID>
 <Active>false</Active>
 <Format>NTFS</Format>
 <Label>Windows</Label>
 <Letter>C</Letter>
 </ModifyPartition>
 <ModifyPartition wcm:action="add">
 <Order>3</Order>
 <Active>false</Active>
 <Label>User</Label>
 <Letter>D</Letter>
 <PartitionID>3</PartitionID>
 <Format>NTFS</Format>
 </ModifyPartition>
 </ModifyPartitions>
 <WillWipeDisk>true</WillWipeDisk>
 <DiskID>0</DiskID>
 </Disk>
 <WillShowUI>OnError</WillShowUI>
 </DiskConfiguration>
 <WindowsDeploymentServices>
 <Login>
 <Credentials>
 <Domain>pojwir</Domain>
 <Password>adminpass</Password>
 <Username>administrator</Username>
 </Credentials>
 </Login>
 <ImageSelection>
 <InstallImage>
 <ImageGroup>W7Ultimate</ImageGroup>
 <Filename>win7_ult_64bit.WIM</Filename>
 <ImageName>Windows 7 Ultimate 64bit full</ImageName>
 </InstallImage>
 <InstallTo>
 <DiskID>0</DiskID>
 <PartitionID>2</PartitionID>
 </InstallTo>
 </ImageSelection>
 </WindowsDeploymentServices>
 </component>
 </settings>
 <cpi:offlineImage cpi:source="wim://hogar/reminst/images/win7_ult_64bit.wim#Windows 7 Ultimate 64bit full" xmlns:cpi="urn:schemas-microsoft-com:cpi" />
</unattend>