Hey, I’m on the radio!

Last week I had the pleasure of being interviewed for the Get scripting podcast. In the podcast I talk about PowerShell and MDT, why PowerShell is the best thing since slice bread, and meeting men on the Severn bridge! Listen to the podcast here.


Get scripting podcast


!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=”//platform.twitter.com/widgets.js”;fjs.parentNode.insertBefore(js,fjs);}}(document,”script”,”twitter-wjs”); !function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=”//platform.twitter.com/widgets.js”;fjs.parentNode.insertBefore(js,fjs);}}(document,”script”,”twitter-wjs”); !function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=”//platform.twitter.com/widgets.js”;fjs.parentNode.insertBefore(js,fjs);}}(document,”script”,”twitter-wjs”);





Enabling MDT items with with Windows PowerShell

If you use Windows PowerShell to access and manipulate your MDT deployment share you might have trouble enabling disabled items. To enable all the drivers within your deployment share run this PowerShell 1 liner within your out of the box drivers directory.

get-childitem|Foreach {Set-ItemProperty -Path $_.name -Name Enable -Value ‘True’}

To disable

get-childitem|Foreach {Set-ItemProperty -Path $_.name -Name Enable -Value ‘False’}

This one liner can also be used to enable and disable task sequences.

Thank you to Ben Hunter, senior program manager at Microsoft solution accelerators for helping me with this. Ben blogs at Deployment guys

Making deployment’s easier by adding features using Microsoft deployment tools

Adding Windows features within a Windows operating system is a relatively easy process once an installation is completed. But what if you wanted to deploy the installation of features? Well luckily those clever people in Redmond have thought of this. You can use the following tools to install Windows features.

In this example I am using the tools to install the Windows PowerShell integrated scripting environment feature which does not get installed on all operating systems. The ISE needs the .NET framework version 3.5 to work.

All these tools require that the Windows Automated Installation Kit are installed, each operating system version has its own WAIK so a quick search on your favourite search engine will lead you to the WAIK of your choice.

DISM: Deployment Image Service Management

To add a feature to a windows image using DISM follow these steps..

Open the deployment tools command prompt with elevated privileges

Mount the WIM image by running the command

dism.exe /mount-wim /wimfile:"W:deploymentOperating SystemsWIN install.wim" /index:1 /mountdir:D:mount

Once mounted we can have a look at the features available to us within the image by using the commands

dism.exe /image:d:mount /get-features

I like to pass this to a text file so its easier to read, this is the command to output to a text file.

dism.exe /image:d:mount /get-features >c:features.txt

This gives me the following Powershell related features

Feature Name : MicrosoftWindowsPowerShellISE
State : Disabled

Feature Name : NetFx3
State : Disabled

NetFx3 is the .NET framework which is required for the ISE to work

Install ISE by running these commands

dism.exe /image:d:mount /enable-feature /featurename:NetFx3 (Run this first or DISM will give an error, and DISM is case sensitive)

Then run….

dism.exe /image:d:mount /enable-feature /featurename:MicrosoftWindowsPowerShellISE

Once the features are installed, if you go back and use the get-features command, you will notice that both the ISE and NET features are Enable Pending this means that the features are ready to be installed when the OS is installed.

MDT 2010 U1: Microsoft Deployment Toolkit

Using MDT makes things a lot easier. By adding a step to a task sequence we can add features to builds at the end of the deployment

To add a step to a Task sequence, open the TS, highlight the custom tasks folder under state restore, click on Add, Roles, Install Roles, and Features, and select NET framework features and the ISE feature. Click apply.

The next time you install using the modified Task sequence, ISE will install at the end of the deployment.

Using these tools can make feature installations easier when deploying operating systems.

Just think about a large scale deployment of 200 plus systems and you were tasked with adding a feature to each.

You would soon change your mind ūüôā

Don’t be scared of the Microsoft Deployment Toolkit

Whilst at various conferences, seminars, and reading Technet forum posts, I hear and read conversations about MDT. Here are some of the highlights.

I want to deploy Windows but I’m not an enterprise, I cant afford System Center

MDT is free! Its freely available from the Microsoft solutions accelerators. It does not require System Center to work.

I do not have an extensive network, and I do not use PXE boot facilities as my users are home workers.

MDT does not require servers to deploy Operating systems. MDT is a deployment workbench, its used to bring together the various components of a deployment. You could create a media deployment which could be a DVD, USB media which contains all the deployment components.

At the moment we run XP. We are rolling out Windows 7 next year, so we will wait a while before using MDT

You can use MDT to deploy XP! Ill admit you lose some functionality like adding roles and you still have to use Sysprep instead of the more advance unattend xml files. But its still a lot more advanced than old style RIS deployments.

I added all my systems drivers to the out of the box drivers folder but when I build, it always shows two or three unknown drivers what’s going on!

The best way to build and capture a reference image is to use a virtual machine.A virtual machine doesn’t have the driver issues that physical machines have. After I moved to virtualization, I went from 10 builds down to 1! The best virtualization applications are the type that have snapshot capabilities, such as HyperV, Vmware, Virtualbox.

I want to be certified in MDT, how do I go about achieving this?

There’s no certification for MDT. However there are certifications which cover MDT and Windows deployment. Search for Microsoft exams 70-680, 70-681, and  70-686

I want to deploy to multiple sites, but I’m worried about our bandwidth, is it possible with MDT?

MDT can create linked deployment shares which holds a duplicate copy of the main deployment share on a locally held deployment share. When deploying to a remote machine, MDT can assess the network gateway and instruct the deployment to use the local deployment share.

Is it possible to automate the deployment? I don’t want to have to click through a menu on each of my 300 machines

It is possible to automate the deployment, MDT can use a database to store all the information about a deployment. When the deployment starts, MDT queries the the database, if the query finds a match to a machine listed in the database, the deployment will automate.

Hey, Can someone suggest me an article, or website on Win7 Deployment?

At the moment Windows deployment is quite a hot topic. There a number of articles and blog posts dedicated to the subject.


Deployment Research

The deployment bunny

Springboard series

Extreme deployment


Deployment Fundamentals Deployment Fundamentals – Kindle Edition

Mastering Windows 7 Deployment


Technet – Microsoft Deployment Toolkit Forum

Technet – Windows 7 Installation, Setup, and Deployment Forum


Hopefully this should help you on your way to deployment success. Good luck in your deployments.

MDT PowerShell database bulk import

Using PowerShell to read through a CSV file to add computer entries into the MDT 2010 Database

Tonight on Twitter there were a few mentions about a blog post importing computers in bulk into the MDT database using VbScript. The blog post in question was http://www.myitforum.com/myITToolbar/frame-click.asp?url=http://skatterbrainz.blogspot.com/2011/05/vbscript-bulk-import-for-mdt-2010.html

Skatterbrainz had to convert a PowerShell Module into VBScript. The module can be found here.


I use the scripts contained within this module all the time, here is the command I use to Bulk import my computer items.

I have a CSV file with my computer information.

With each heading being a setting used in the database.


I then run the following script.

Import-Module mdtdb

$assets = Import-Csv “.Book2.csv”
connect-mdtdatabase -sqlserver yourdatabaseserver -database MDTDB4

ForEach($asset In $assets)


new-mdtcomputer¬†-serialnumber $asset.SerialNumber -settings @{OSInstall=’YES’; OSDComputerName=$asset.OSDComputername; _SMSTSORGNAME=$asset._SMSTSORGNAME}


This will run through the CSV file and add them names and settings to the MDT database.

If you need to add different settings, just add SETTINGNAME=$asset.SETTINGNAME within the { }

So quite an easy way to quickly import items into the MDT database.