MDT: Automating Static IP during Bare metal boot

No DHCP? No Problem

In this scenario, the requirement is to boot a lite touch boot image with a static IP address, where is no DHCP available. You can use a custom answer file (unattend.xml) to configure your static IP settings at boot. Below are 2 methods

Method 1 – Netshell

Use the answer file in your extra files folder to run a command line like netsh  during boot. I’ve previously explained how to use the extra files for BGInfo and the process is pretty much the same.

  1. Create a folder called ‘ExtraFiles’ (or Extrafiles64) in your deployment share.
  2. Next, create a folder called Windows with a subfolder called System32 beneath it.
  3. In the Deployment Workbench, Right-Click on the Deployment Share and select properties. Then click on the Windows PE x86 Settings (or Windows PE x86 Settings )Tab
  4. In the Windows PE Customizations section browse to the ExtraFiles (or Extrafiles64) folder


  1. Open Windows System Image Manager and select a DeploymentShare
  2. Then select a Windows Image
  3. Then create a New AnswerFile
  4. Add the following settings to the Answer File in the WindowsPE configuration Pass

Microsoft-Windows-Setup | RunSynchronous | RunSynchronousCommand

5. Add the following settings:

Description=Set Static IP Address
Path=netsh interface ip set address Ethernet static

Description=Set Background
Path=Bginfo.exe Win_PE.bgi /silent /timer:0 /NOLICPROMPT

Description=Lite Touch PE
Path=wscript.exe X:\Deploy\Scripts\LiteTouch.wsf


In this example I am placing the command before BGInfo and Lite Touch PE. Ommit the BGInfo section if you’ve not configured it.

6.  Save the file in your deployment share as \ExtraFiles\Unattend.XML then update the deployment share to recreate the LiteTouchPE_x86.wim (or ISO or x64)

Method 2 – Set a Unicast IP Address

In this method, we use the native settings of the WindowsPE answer file configuration pass.

1. Navigate to Microsoft-Windows-TCPIP | Interfaces | Interface | Ipv4Settings and select Add Setting to Pass 1 windowsPE.


2. Add the following settings:



3. Under Microsoft-Windows-TCPIP | Interfaces | Interface | UnicastIpAddresses

and select Add Setting to Pass 1 windowsPE.


4. Add an IP Address with the following settings:


5. Navigate to Microsoft-Windows-TCPIP | Interfaces | Interface

and change the Identifier to “Ethernet”.


6. Again, save the file in your deployment share as \ExtraFiles\Unattend.XML then update the deployment share to recreate the LiteTouchPE_x86.wim (or ISO or x64)

Be aware that this method only has very basic IP settings.

Posted in Deployment, MDT 2010, MDT 2012 | Tagged , , , | Leave a comment

MDT: Manually configure a Static IP Address during LTI Deployments

No DHCP? No Problem.

Part 1.

I’ve been working on the various methods of setting Static IP addresses during Lite Touch deployments and decided to space the articles out over the week. Today we’ll cover the easy ones.

If you boot into WinPE and find you don’t have an IP Address there are 2 quick ways to configure one. The first is to use the Welcome wizard pane. If you don’t see this pane then remove the line SkipBDDWelcome=YES from your bootstrap.ini file.

Simply click the Configure with Static IP Address button then a new pane will appear where you can enter the IP details.


You can also use netsh to set a static IP via a command prompt.


In this scenario, WINPE uses “Ethernet” as the adapter name. The command is

netsh interface ip set address Ethernet static

In the next post, I’ll explain how to automate a Static IP Address during a bare metal boot.

Posted in MDT 2010, MDT 2012 | Tagged , , , , | 4 Comments

LTI/ZTI Deployments: Injecting drivers during deployment

One of the best reasons implementing MDT 2012 is the way it manages your drivers. I had a customer who was using WDS only for deploying their Windows 7 images. They told me that the deployment would halt for around 30 minutes when applying drivers. The problem there was that every driver was being to applied to every machine during deployment. I explained to them a few ways in which MDT could help.

Small Scale

When you create a new Operating System deployment Task Sequence, the default behaviour is to Install only matching drivers from the selection profile. This will save an immense amount of time without you having to do anything.


For small deployments with up to 10 models and only 1 version of Windows these defaults will suffice and I would continue to use them.

Medium Scale

If you have multiple Operating Systems I suggest using the driver selection profiles to isolate each Operating System and Architecture(x86,AMD64).


Large Scale

For larger organisations where you have many makes and models (25+) and multiple OS versions I suggest isolating your Drivers by Operating System/Architecture and Make/Model then dynamically applying the drivers. This will isolate and ensure that only the exact drivers are downloaded in injected during your deployments.

Here’s how it’s done. Organise your drivers by using the driver management methods in my previous posts:

Your drivers will now be organised in a tree hierarchy like in this screenshot.

This time we wont be using the selection profiles so change the selection profile to nothing.


Next, create a new Task Sequence Variable for DriverGroup001 and enter a value for the Operating System root folder then make and model variables.


Now during your deployments, MDT will only apply a small subset of drivers to each model.

You could also do this in the customsettings.ini by adding the DriverGroup property to a specific path. This example demonstrates such a method but assumes you have only 1 Operating System.

Priority=Model, Default


[OptiPlex 755]
  DriverGroup001="Windows 7 x86\Dell Inc\OptiPlex 755"

[HP ProBook 6560b]
  DriverGroup001="Windows 7 x86\Hewlett-Packard\HP ProBook 6560b"

Posted in MDT 2010, MDT 2012, SCCM | Tagged , , | 18 Comments

MDT 2012: Skipping Deployment Wizard Panes

Microsoft Deployment Toolkit 2012

This is an updated version of the skipping deployment wizard pages table. This is one of the most popular articles on Scriptimus Ex Machina as it covers most of what is required to automate Lite Touch deployments. Readers use it as a jumping off point to find other articles written here.

If you’re interested in automating your deployments then this table should help. You can also use the value SkipWizard property to completely hide all wizard panes. If you do this however, remember to supply all the required values or your deployments may fail.

Skip this wizard page

Using this property

Configure these properties



Specify credentials for connecting to network shares

Skipped by providing properties in next column

·  UserID

·  UserDomain

·  UserPassword

Task Sequence


·  TaskSequenceID

Computer Details



·  OSDComputerName

·  JoinWorkgroup


·  JoinDomain

·  DomainAdmin

User Data


·  UDDir

·  UDShare

·  UserDataLocation

Move Data and Settings


·  UDDir

·  UDShare

·  UserDataLocation

User Data (Restore)


·  UDDir

·  UDShare

·  UserDataLocation

Computer Backup


·  BackupDir

·  BackupShare

·  ComputerBackupLocation

Product Key


·  ProductKey


·  OverrideProductKey

Language Packs


·  LanguagePacks

Locale and Time



·  KeyboardLocale

·  UserLocale

·  UILanguage

·  TimeZone

·  TimeZoneName

Roles and Features


·  OSRoles

·  OSRoleServices

·  OSFeatures



·  Applications

Administrator Password


·  AdminPassword

Local Administrators


·  Administrators

Capture Image


·  ComputerBackupLocation



·  BDEDriveLetter

·  BDEDriveSize

·  BDEInstall

·  BDEInstallSuppress

·  BDERecoveryKey

·  TPMOwnerPassword

·  OSDBitLockerStartupKeyDrive

·  OSDBitLockerWaitForEncryption

Ready to begin


Operating system deployment completed successfully


Operating system deployment did not complete successfully




Posted in Deployment, MDT 2012 | Tagged , , , | 9 Comments

MDT 2012: DomainOUs List

There’s a feature in MDT that displays a dropdown list of Domain OU’s in the Lite Touch deployment wizard. There are 2 ways to set it up.

First, you can create a list of OU’s in the customsettings.ini by using the DOMAINOUS variable list. This first example demonstrates this:


This example shows the other method where you create a file in your scripts folder called DomainOUList.xml and list each OU in a separate element:


The result is you now get a dropdown list button next to the Organizational Unit in the deployment wizard.


The list displays the OU’s you entered earlier making it easier to select and reduce errors during deployments.



There’s also an old post by Keith Garner here that shows how to display friendly names.

Posted in Deployment, MDT 2010, MDT 2012 | Tagged , | 3 Comments

MDT 2012: Missing network drivers during LTI boot

I was contacted last week by a former colleague who is just getting into MDT. He was missing drivers on one model and received this common error page during his boot sequence. Naturally, I had loads of resources to share but sadly the final part was missing from my blog. The error is:

A connection to the deployment share (\\Server\DeploymentShare$)
could not be made.
The following networking device did not have a driver installed.

Here’s how to resolve this issue.

Missing Drivers

This error is very helpful in that it shows the hardware ID of the missing network driver. A quick Google search or visit to Microsoft Update Catalog should find the missing drivers.

Create a Driver Store

After you locate and download the correct driver, create an organised driver store on a local or network drive. I posted a script to do this a few months back. MDT Powershell: Creating a Driverstore folder structure

Import Drivers

Next, import the drivers into the desired Windows PE folder and run the script to import the drivers into the deployment workbench. Again, I created another script to do this a few months back. MDT Powershell: Importing device drivers from organised folders My script will not only creates the driver folders but the selection profiles also.

Check the hardware ID of the imported driver and ensure that it matches the error from earlier.

Imported Driver

Apply Selection Profiles

We now need to use selection profiles to ensure that only the Windows PE network drivers get copied to the boot disk, otherwise the boot image can take longer to load.

To do this, right-click the deployment share and select properties. Select the correct platform then the WinPE selection profile.


Recreate the Boot Image

Finally, recreate the boot image by updating the deployment share.


Update your boot media with the newly updated LiteTouchPE_x64.wim file and reboot your client.


I recommend implementing selection profiles like this to isolate your boot drivers and ensure that the boot process runs as fast as possible.

Posted in Deployment, MDT 2010, MDT 2012 | Tagged , , , | 8 Comments

Test Lab: Base Configuration – Hydration Kit: Custom Default settings


When using the Test Lab:Base Configuration Hydration Kit, you may want to use your own custom domain and server names. After all, it’s your testlab and you might spend a considerable amount of time working there. It makes sense to personalise it. The wizard is designed to allow customisation but this can become cumbersome if you rebuild your own custom labs repeatedly(like me). Here’s my method of customising the defaults in the Hydration kit.

After you’ve built the media folder using the Build-Kit.ps1 script you can edit the customsettings.ini file to change the defaults. If you’re not familiar with MDT, this is the configuration file that stores the default settings. By default the Hydration Kit stores the media customsettings.ini in the C:\TestLab_BaseConfigMedia\Content\Deploy\Control\ folder


Use notepad to make the changes to the server names, domain and IP Scopes if desired. Remember to be consistent with your changes or your deployment will fail. Below is an example of a modified file.


Now you can run the create media script to create your customised media file. This command will create a new media file from the default folder with the name CON-TestLabConfig.iso.

.\Create-Media.ps1 -ISOImageName CON-TestLabBaseConfig.iso


Follow the project here on Codeplex for updates.

Posted in Deployment, MDT 2012, Testlab | Tagged , , , | 5 Comments