In this article, we will focus on deploying  Windows 7 and 10, and the Server is windows 2012 R2.

In the WDS MMC, right click Active Directory Prestaged Devices, click add device.

In the Identity page, Give it a descriptive name and Device ID (MAC address in 00-0C-29-71-08-26 format). Then click next.

Boot window:

Referral server: if you want to download the boot program from another server other than current server.

PXE prompt Policy: For unattended installation: use Always continue the PXE boot.

 

Client unattend:

You can create a easy unattended file here, but it’s recommended to use ADK

If you don’t have one, click Create new.

  • Then select the Setup Language to you like.
  • Enter a Domain credential that can run WDS service.
  • Architechture support: Select the Specify the install image, the click Select…, add the image you want to install.
  • Installation info: The disk number start from 0, partition number from 1. In Windows 8, 10, it typically use partition ID 2 cause the first one is system reserved.,  in Windows 7, we use partition 1.

 

Create Prestaged Devices in bulk

You can create a CSV file named c:\devices.csv to store the Device name, MAC address, OU info (not recommend to modify OU here, may has bug with it):

HostName,GUID,DN
win10sec,00-50-56-27-18-31,"OU=testingOU,DC=test,DC=com"
win10First,00-0C-29-71-08-26,"OU=testingOU,DC=test,DC=com"

Then create a powershell file in the same folder to create prestaged devices from this csv file:

$csv=Import-Csv c:\devices.csv;

Foreach ($line in $csv){
 New-WdsClient -DeviceName $($line.Hostname) -DeviceID $($line.GUID) -PxePromptPolicy OptIn -WdsClientUnattend "\\Wds\reminst\WdsClientUnattend\win10.xml"-JoinDomain $True -OU $($line.DN) -Domain "test.com" -JoinRights Full -User "test\Domain_admin_user"
 }

\\Wds\reminst\WdsClientUnattend\win10.xml is the network location of the answer file, you need to change it into your own location.

https://technet.microsoft.com/en-us/library/dn283430(v=wps.630).aspx

Before configuration a answer file, it’s critical to know how the configuration passes work, you can find here: http://frankfu.click/microsoft/70-411-administering-win-2012r2/configuration-passes-windows-setup.html

Answer file

Windows 7 Answer file: http://misheska.com/blog/2013/07/26/windows-7-automated-install-settings/

The configuration I want to do in the answer file:

  1. wipe disk and partition it.
  2. choose windows image to install and the target partition to install
  3. After installation, join domain to the domain according to  prestaged devices.
  4. Set up the OOBE, location, language, time zone,

After I tried on VM machine, I found one answer file can not deal with all the settings. Then after some research, and we can use two answer files to do these tasks:

  • first file to wipe disk, partition;
First answer file (step 1 and 2):

Before creating answer file, we need to figure out which partition we want to install windows, this is especially important If you don’t want to re-partition the disk, you can boot into a WinPE then Shift + F10 to activate Command Prompt. or if you can boot into windows:

Open cmd, type diskpart, then use following command:

list disk

select disk 0

list partition

Note down the partition number you want to install windows by the size of the partition, it’s not the system reserved partition number which may only have 100MB or some size similar.

Where to configure:

Microsoft-Windows-Setup | DiskConfiguration | Disk | ModifyPartitions | ModifyPartition

Partition type:

Partition Active Letter Label Format Extend
Primary Yes Yes Yes Yes Yes
Extended No No No No No
Logical No Yes Yes Yes Yes
EFI No Yes Yes Yes No
MSR No No No No No
Child Elements

Active Specifies whether the partition is active.
Extend Specifies whether to extend the partition to use the remainder of contiguous space on the hard disk.
Format Specifies the file system format to apply to the partition.
Label Specifies the name to apply to the partition.
Letter Specifies the drive letter to assign to the partition.
Order Specifies the order in which the partition will be modified.
PartitionID Specifies the identification number of the partition to modify.
Valid Passes

 

Note the partition number start from 1 and disk number start from 0. For a windows 10 clean installation, you may install a windows on disk 0, partition 2.

In windows 10 you can create an answer file by:

  • Go to “Components > amd64_Microsoft-Windows-setup_10.x.xxxxx.x_neutral > DiskConfiguration” Right click Diskconfiguration “, Add configuration to pass1 WindowsPE.
  • In the answer file right click “diskConfiguration”, click “insert new disk”, click disk and input 0 in the DiskID. WillWipeDisk specifies whether to erase all partitions on the hard disk before adding additional configurations to the disk.  I tried many times to only
  • Right CLick CreatePartitions, click “Insert new createpartition”, we will create a system reserved partition
    • Action: AddLIstItem
    • Extend: false
    • order: 1
    • size: 100 , the unit is MB
    • Type: primary
  • Right CLick CreatePartitions, click “Insert new createpartition”, we will create a Windows system
    • Action: AddLIstItem
    • Extend: true
    • order: 2
    • size: leave it default, so we will use all the rest disk space.
    • Type: primary
  • Right Click ModifyPartitions, click “Insert new Modifypartition”, we will modify the system reserved partition
    • Action: AddLIstItem
    • Active: true
    • Extend: false
    • Format: NTFS
    • Label: system reserved
    • Letter: leave it empty
    • order: 1
    • PartitionID:1
    • TypeID: leave it empty
  • Right Click ModifyPartitions, click “Insert new Modifypartition”, we will modify the windows partition
    • Action: AddLIstItem
    • Active: false
    • Extend: true
    • Format: NTFS
    • Label: windows10
    • Letter: C
    • order: 2
    • PartitionID:2
    • TypeID: leave it empty

Then add the location to install windows 7 and the image you select, you can find the image group, image name, file name in the WDS console.

The file file should be selected in WDS MMC,  the Active Directory Prestaged Devices, or in the WDS server  Properties > Client > enable unattended installation.

The answer file will like bellow:

Install with partitioning disk and formating disk
<?xml version="1.0" encoding="utf-8"?> <unattend xmlns="urn:schemas-microsoft-com:unattend">     <settings pass="windowsPE">         <component name="Microsoft-Windows-Setup" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" processorArchitecture="x86">             <WindowsDeploymentServices>                 <Login>                     <WillShowUI>OnError</WillShowUI>                     <Credentials>                         <Username>domain_admin_user</Username>                         <Domain>domain_name</Domain>                         <Password>password</Password>                     </Credentials>                 </Login> <!-- This part use the image group name and image name on your WDS server-->                 <ImageSelection>                     <WillShowUI>OnError</WillShowUI>                     <InstallImage>                         <ImageGroup>ImageGroup1</ImageGroup>                         <ImageName>Windows 10 Enterprise Evaluation</ImageName>                         <Filename>install.wim</Filename>                     </InstallImage>                     <InstallTo>                         <DiskID>0</DiskID>                         <PartitionID>2</PartitionID>                     </InstallTo>                 </ImageSelection>             </WindowsDeploymentServices>             <EnableNetwork>true</EnableNetwork>         </component>         <component name="Microsoft-Windows-International-Core-WinPE" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" processorArchitecture="x86">             <SetupUILanguage>                 <UILanguage>en-US</UILanguage>             </SetupUILanguage>             <InputLocale>en-AU</InputLocale>             <SystemLocale>en-AU</SystemLocale>             <UILanguage>en-US</UILanguage>             <UserLocale>en-AU</UserLocale>         </component>         <component name="Microsoft-Windows-Setup" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" processorArchitecture="amd64"> <!--#########start deployment service, including select image, the target partition to install######-->             <WindowsDeploymentServices>                 <Login>                     <WillShowUI>OnError</WillShowUI>                     <Credentials>                         <Username>domain_admin_user</Username>                         <Domain>domain_name</Domain>                         <Password>password</Password>                     </Credentials>                 </Login>                 <ImageSelection> <!--The onError option make sure the silent installation, OnError is the default option-->                     <WillShowUI>OnError</WillShowUI>                     <InstallImage>                         <ImageGroup>ImageGroup1</ImageGroup>                         <ImageName>Windows 10 Enterprise Evaluation</ImageName>                         <Filename>install.wim</Filename>                     </InstallImage>                     <InstallTo>                         <DiskID>0</DiskID>                         <PartitionID>2</PartitionID>                     </InstallTo>                 </ImageSelection>             </WindowsDeploymentServices> <!--######### deployment service end #####-->             <EnableNetwork>true</EnableNetwork> <!--##########Disk partition start#####--> <DiskConfiguration>                 <Disk wcm:action="add" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State"> <!--##########Disk partition Creation start#####-->                     <CreatePartitions>                         <CreatePartition wcm:action="add">                             <Order>1</Order>                             <Size>100</Size>                             <Type>Primary</Type>                         </CreatePartition>                         <CreatePartition wcm:action="add">                             <Order>2</Order>                             <Type>Primary</Type>                             <Extend>true</Extend>                         </CreatePartition>                     </CreatePartitions> <!--##########Disk partition Creation ends#####--> <!--##########Disk partition format start#####-->                     <ModifyPartitions>                         <ModifyPartition wcm:action="add">                             <Active>true</Active>                             <Format>NTFS</Format>                             <Label>System Reserved</Label>                             <Order>1</Order>                             <PartitionID>1</PartitionID>                         </ModifyPartition>                         <ModifyPartition wcm:action="add">                             <Active>false</Active>                             <Format>NTFS</Format>                             <PartitionID>2</PartitionID>                             <Order>2</Order>                             <Letter>C</Letter>                             <Label>Windows10</Label>                         </ModifyPartition>                     </ModifyPartitions> <!--##########Disk partition format ends#####-->                     <DiskID>0</DiskID>                     <WillWipeDisk>true</WillWipeDisk>                 </Disk>             </DiskConfiguration> <!--#########disk partition ends############-->         </component>         <component name="Microsoft-Windows-International-Core-WinPE" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" processorArchitecture="amd64">             <SetupUILanguage>                 <UILanguage>en-US</UILanguage>             </SetupUILanguage>             <InputLocale>en-AU</InputLocale>             <SystemLocale>en-AU</SystemLocale>             <UILanguage>en-US</UILanguage>             <UserLocale>en-AU</UserLocale>         </component>     </settings>         <cpi:offlineImage cpi:source="wim:d:/wim/install.wim#Windows 10 Enterprise Evaluation" xmlns:cpi="urn:schemas-microsoft-com:cpi" /> </unattend>

Note that you may get an error messages says ” unknow property: xmlns:wcm”, just ignore it. But if you want to modify it later, you may have to manually delete the <Diskconfiguration> </diskconfiguration> part.

You can also choose to only format the disk by only use the modifypartition part, and set the willWipeDisk to false, the file will like this:

Install with only formating disk
<?xml version="1.0" encoding="utf-8"?> <unattend xmlns="urn:schemas-microsoft-com:unattend">     <settings pass="windowsPE">         <component name="Microsoft-Windows-Setup" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" processorArchitecture="x86">             <WindowsDeploymentServices>                 <Login>                     <WillShowUI>OnError</WillShowUI>                     <Credentials>                         <Username>Domain_admin_user</Username>                         <Domain>domain_name</Domain>                         <Password>password</Password>                     </Credentials>                 </Login>                 <ImageSelection>                     <WillShowUI>OnError</WillShowUI>                     <InstallImage>                         <ImageGroup>ImageGroup1</ImageGroup>                         <ImageName>Windows 10 Enterprise Evaluation</ImageName>                         <Filename>install.wim</Filename>                     </InstallImage>                     <InstallTo>                         <DiskID>0</DiskID>                         <PartitionID>2</PartitionID>                     </InstallTo>                 </ImageSelection>             </WindowsDeploymentServices>             <EnableNetwork>true</EnableNetwork>         </component>         <component name="Microsoft-Windows-International-Core-WinPE" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" processorArchitecture="x86">             <SetupUILanguage>                 <UILanguage>en-US</UILanguage>             </SetupUILanguage>             <InputLocale>en-AU</InputLocale>             <SystemLocale>en-AU</SystemLocale>             <UILanguage>en-US</UILanguage>             <UserLocale>en-AU</UserLocale>         </component>         <component name="Microsoft-Windows-Setup" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" processorArchitecture="amd64">             <WindowsDeploymentServices>                 <Login>                     <WillShowUI>OnError</WillShowUI>                     <Credentials>                         <Username>Domain_admin_user</Username>                         <Domain>domain_name.com</Domain>                         <Password>password</Password>                     </Credentials>                 </Login>                 <ImageSelection>                     <WillShowUI>OnError</WillShowUI>                     <InstallImage>                         <ImageGroup>ImageGroup1</ImageGroup>                         <ImageName>Windows 10 Enterprise Evaluation</ImageName>                         <Filename>install.wim</Filename>                     </InstallImage>                     <InstallTo>                         <DiskID>0</DiskID>                         <PartitionID>2</PartitionID>                     </InstallTo>                 </ImageSelection>             </WindowsDeploymentServices>             <EnableNetwork>true</EnableNetwork>             <DiskConfiguration>                 <Disk wcm:action="add" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State">                     <ModifyPartitions>                         <ModifyPartition wcm:action="add">                             <Active>true</Active>                             <Format>NTFS</Format>                             <Label>System reserved</Label>                             <Order>1</Order>                             <PartitionID>1</PartitionID>                         </ModifyPartition>                         <ModifyPartition wcm:action="add">                             <PartitionID>2</PartitionID>                             <Order>2</Order>                             <Label>Windows10Part</Label>                             <Letter>C</Letter>                             <Format>NTFS</Format>                             <Active>false</Active>                         </ModifyPartition>                     </ModifyPartitions>                     <DiskID>0</DiskID>                     <WillWipeDisk>false</WillWipeDisk>                 </Disk>                 <WillShowUI>OnError</WillShowUI>             </DiskConfiguration>         </component>         <component name="Microsoft-Windows-International-Core-WinPE" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" processorArchitecture="amd64">             <SetupUILanguage>                 <UILanguage>en-US</UILanguage>             </SetupUILanguage>             <InputLocale>en-AU</InputLocale>             <SystemLocale>en-AU</SystemLocale>             <UILanguage>en-US</UILanguage>             <UserLocale>en-AU</UserLocale>         </component>     </settings>     <settings pass="specialize">         <component name="Microsoft-Windows-UnattendedJoin" 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">             <Identification>                 <UnsecureJoin>true</UnsecureJoin>                 <JoinDomain>domain_name.com</JoinDomain>                 <MachineObjectOU>OU=testingOU,DC=domain_name,DC=com</MachineObjectOU>                 <Credentials>                     <Domain>domain_name.com</Domain>                     <Password>password</Password>                     <Username>Domain_admin_user</Username>                 </Credentials>             </Identification>         </component>         <component name="Microsoft-Windows-Shell-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">             <ComputerName>%MACHINENAME%</ComputerName>             <DisableAutoDaylightTimeSet>false</DisableAutoDaylightTimeSet>             <ShowPowerButtonOnStartScreen>true</ShowPowerButtonOnStartScreen>             <TimeZone>AUS Eastern Standard Time</TimeZone>         </component>     </settings>     <cpi:offlineImage cpi:source="wim:d:/wim/install.wim#Windows 10 Enterprise Evaluation" xmlns:cpi="urn:schemas-microsoft-com:cpi" /> </unattend>

https://technet.microsoft.com/en-au/library/dd744365(v=ws.10).aspx

In windows 7:

The difference is the type and the number of partition:

  • Right CLick CreatePartitions, click “Insert new createpartition”, we will create a system reserved partition
    • Action: AddLIstItem
    • Extend: false
    • order: 1
    • size: 1000 , the unit is MB
    • Type: primary

NOTE: Don’t worry about getting the size exact – just set it to a reasonable minimum. In the next setting, we will extend the partition to fill all remaining disk space on the drive.

  • Right Click ModifyPartitions, click “Insert new Modifypartition”, we will modify the system reserved partition
    • Action: AddLIstItem
    • Active: true
    • Extend: true, this will ignore the size we set in previous step and extend the partition to use the remainder of contiguous space on the hard disk.
    • Format: NTFS
    • Label: Windows7
    • Letter: C
    • order: 1
    • PartitionID:1
    • TypeID: leave it empty

 

Second answer file (step 3, 4)

Join domain and OOBE setting.

Domain: microsoft

 OOBE file setting
<?xml version="1.0" encoding="utf-8"?> <unattend xmlns="urn:schemas-microsoft-com:unattend">     <settings pass="oobeSystem">         <component name="Microsoft-Windows-International-Core" 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">             <InputLocale>en-AU</InputLocale>             <SystemLocale>en-AU</SystemLocale>             <UILanguage>en-AU</UILanguage>             <UILanguageFallback>en-AU</UILanguageFallback>             <UserLocale>en-AU</UserLocale>         </component>         <component name="Microsoft-Windows-Shell-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">             <OOBE>                 <HideEULAPage>true</HideEULAPage>                 <HideLocalAccountScreen>true</HideLocalAccountScreen>                 <HideOEMRegistrationScreen>true</HideOEMRegistrationScreen>                 <HideOnlineAccountScreens>true</HideOnlineAccountScreens>                 <ProtectYourPC>1</ProtectYourPC>                 <HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE>             </OOBE>             <UserAccounts>                 <AdministratorPassword>                     <Value>UABAAHMAcwB3ADAAcgBkAEEAZABtAGkAbgBpAHMAdAByAGEAdABvAHIAUABhAHMAcwB3AG8AcgBkAA==</Value>                     <PlainText>false</PlainText>                 </AdministratorPassword>                 <LocalAccounts>                     <LocalAccount wcm:action="add">                         <Password>                             <Value>UABAAHMAcwB3ADAAcgBkAFAAYQBzAHMAdwBvAHIAZAA=</Value>                             <PlainText>false</PlainText>                         </Password>                         <Description>local admin</Description>                         <DisplayName>admin</DisplayName>                         <Group>administrators</Group>                         <Name>admin</Name>                     </LocalAccount>                 </LocalAccounts>             </UserAccounts>             <TimeZone>AUS Eastern Standard Time</TimeZone>             <DisableAutoDaylightTimeSet>false</DisableAutoDaylightTimeSet>             <ShowPowerButtonOnStartScreen>true</ShowPowerButtonOnStartScreen>         </component>     </settings>     <settings pass="specialize">         <component name="Microsoft-Windows-Shell-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">             <ComputerName>%MACHINENAME%</ComputerName>             <ShowPowerButtonOnStartScreen>true</ShowPowerButtonOnStartScreen>             <TimeZone>AUS Eastern Standard Time</TimeZone>         </component>         <component name="Microsoft-Windows-UnattendedJoin" 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">             <Identification>                 <Credentials>                     <Domain>your_domain</Domain> //used to join domain                     <Password>password</Password>                     <Username>domain_admin_user</Username>                 </Credentials>                 <JoinDomain>domain_name</JoinDomain>                 <MachineObjectOU>ou=testingOU,DC=domain_name,DC=com</MachineObjectOU>             </Identification>         </component>     </settings>     <cpi:offlineImage cpi:source="wim:d:/wim/install.wim#Windows 10 Enterprise Evaluation" xmlns:cpi="urn:schemas-microsoft-com:cpi" /> </unattend>

Link this file to the image. In WDS MMC, click the server, click your wds server FQDN, Install images > the image group >right click on the image name, choose proerties > tick allow image to install in unattended mode, click select file>choose the answer file.

Or you can make it easier, configure all these in one answer file, link it both to the architechture, image, and Active Directory Prestaged Devices.

 

Reference:
OOBE:

Time zone: https://technet.microsoft.com/en-us/library/cc749073(v=ws.10).aspx

Automate joining domain

https://technet.microsoft.com/en-us/library/cc730845(v=ws.10)

You can also pre-set a language and specify language and locale settings in the oobeSystem configuration pass in the Microsoft-Windows-International-Core component. When you do this, the Windows Welcome language selection UI page will be skipped when the end users boot to Windows Welcome.

https://technet.microsoft.com/en-us/library/dd744569(v=ws.10).aspx

Microsoft-Windows-Shell-Setup

It contains elements and settings that control how the Windows operating system shell is installed on a destination computer.:

https://msdn.microsoft.com/en-us/windows/hardware/commercialize/customize/desktop/unattend/microsoft-windows-shell-setup

The Microsoft-Windows-International-Core component

It includes the language and input locale settings for the system and the user:

https://technet.microsoft.com/en-us/library/cc766400(v=ws.10).aspx

https://docs.microsoft.com/en-us/windows/deployment/deploy-windows-mdt/create-a-windows-10-reference-image

 

Build a simple answer file

https://technet.microsoft.com/en-us/library/cc749317(v=ws.10).aspx

Store the answer file on a DVD or USB to deploy automated installation

 

Search Order Location Description

1

Registry

HKEY_LOCAL_MACHINE\System\Setup\UnattendFile

Specifies a pointer in the registry to an answer file. The answer file is not required to be named Unattend.xml.

2

%WINDIR%\Panther\Unattend The name of the answer file must be Unattend.xml or Autounattend.xml.

noteNote
Windows Setup searches this directory only on downlevel installations. If Windows Setup starts from Windows PE, the %WINDIR%\Panther\Unattend directory is not searched.

3

%WINDIR%\Panther Windows Setup caches answer files to this location for use in subsequent stages of installation. For example, when a computer reboots, Setup can continue to apply the settings in an answer file. If you explicitly specify an answer file by using Windows Setup or Sysprep, the answer file cached to this directory is overwritten with the explicitly specified answer file.

ImportantImportant
Do not use, modify, or overwrite the answer file in this directory. The answer file in this directory is annotated by Windows Setup during installation. This answer file cannot be reused in Windows SIM or any other Windows installations.

4

Removable read/write media in order of drive letter, at the root of the drive. Removable read/write media in order of drive letter, at the root of the drive.

The name of the answer file must be Unattend.xml or Autounattend.xml, and the answer file must be located at the root of the drive.

5

Removable read-only media in order of drive letter, at the root of the drive. Removable read-only media in order of drive letter, at the root of the drive.

The name of the answer file must be Unattend.xml or Autounattend.xml, and must be located at the root of the drive.

6

windowsPE and offlineServicing configuration passes:

  • \Sources directory in a Windows distribution

All other passes:

  • %WINDIR%\System32\Sysprep
In the windowsPE and offlineServicing configuration passes, the name of the answer file must be Autounattend.xml.

For all other configuration passes, the file name must be Unattend.xml.

7

%SYSTEMDRIVE%

The answer file name must be Unattend.xml or Autounattend.xml

 

Inplace upgrade from win7/8 to win10 with MDT

https://docs.microsoft.com/en-us/windows/deployment/deploy-windows-mdt/upgrade-to-windows-10-with-the-microsoft-deployment-toolkit

Problem:

1.The answer file does not wipe disk/create partition

The only way I found to get around this was to attach one unattend answer file to the prestaged client(Disk partitioning) and one to the install image.  Once I attached it there, my partitions work.  If I try it using an answer file attached to the image to change disk configuration, no partitioning works at all.  I’m pretty sure it has to do with when the two types of answer files are applied during the whole image process, but I haven’t been able to find a straight answer on that.

 I have two answer files.  One attached to the architecture solely for disk configuration.  One attached to the install images for the Windows Setup answers & other info.

 

2.Client machine does not join the domain

 First of all, don’t choose the ou for the computer account although there is an option in the WDS prestaged device setup, this may result in the computer account being created but computer does not join. Let the computer go to the default folder, then you drag to the desired OU, this bug existe on windows 10 as of Aug 2017.

According to this article, you must have the UnsecureJoin setting (under the Microsoft-Windows-UnattendedJoin component) set to True and you must have the Microsoft-Windows-Shell-Setup component (even if empty) in your unattend file. Both of those must be in the specialize pass.

The downside is that because the domain join happens in the specialize pass, the computer will join the domain with a randomly generated computer name. This is because the ComputerName setting is in the OOBE pass, and is detailed in this article. The workaround is to use a script in conjunction with the FirstLogonCommands setting to join the computer to the domain after the OOBE pass.

Choosing a Permissions Method

 There are two permissions methods for providing credentials to enable a computer to join a domain: unsecure join and secure join. Both of these methods are described in the following table.
Unsecure join Secure join

This method resets the computer account to a known, shared computer password and joins the computer to a domain without credentials. For Windows Vista, Windows Server 2008, Windows 7, and Windows Server 2008 R2 images, this shared computer password is a dynamically generated, strong password that is set by Windows Deployment Services. The password is inserted into the ImageUnattend.xml file as the <MachinePassword> setting. For images from an earlier version of Windows, this shared computer password is the computer name.

  • Advantages: This method does not require you to place credentials in plain text in the unattend file.
  • Disadvantages: For Windows XP and Windows Server 2003 images, it is possible for a malicious user to join the domain between the time the computer account was reset (in Windows PE) and when the actual domain join occurs (on first boot of the applied image). This risk is mitigated when the password is dynamically generated.

To implement an unsecure join, set UnsecureJoin = TRUE and ensure that the Microsoft-Windows-Shell-Setup component exists for the specialize phase.

This method is secure in the sense that it requires credentials (user name, domain, and password) before you can reset the account and perform the domain join. However, in practice this method is actually less secure because the credentials reside in the ImageUnattend.xml file in plain text.

  • Advantages: This method uses a simplified permissions model because you can use a single account throughout your organization to perform all domain join operations.
  • Disadvantages: Credentials are stored in plain text in the image unattend file, which is located on a shared folder on the Windows Deployment Services server.

To implement a secure join, add the following to the unattend file:

  1. Set UnsecureJoin = FALSE.
  2. Specify the credentials for performing the domain join, and the domain that you want to join the computer to.
  3. Ensure that the Microsoft-Windows-Shell-Setup component exists for the specialize phase.
  4. Set the <ComputerName> value to %MACHINENAME%. During installation, Windows Deployment Services will retrieve the name of the prestaged computer from AD DS and replace the %MACHINENAME% string with the actual computer name.

This method is preferred by me personally, because you can prestage a couple of PC in Active directory. remove the password after deployment to eliminate the plain text password risk.

3.  PXE-E16: No offer received.

error

On the WDS server, disable the NetBIOS from the TCP/IP seetings – WINS tab.

Disable NETBIOS

After I disabled it, I tried again and now it works perfectly.

4. Stuck in downloading nbp file

Cause: faulty network cable…., change into a good one to resolve.

5. <DiskConfiguration> error

Open the xml file, check if there is any empty parse, such as <typeID></typeID>. Delete these empty lines will solve the issue.

6. Something went wrong on the VMware windows 10 client

Try to ignore it and test on physical machine. This error does not happen on real windows 10 client machine for me.