The Deployment Bunny

Subscribe to The Deployment Bunny feed The Deployment Bunny
OS Deployment, Virtualization, Microsoft based Infrastructure...
Updated: 44 min 3 sec ago

OSD–Using ZTISendMail to send email in a LTI/ZTI task sequence

Fri, 06/13/2014 - 09:33

Long time ago I had a need to send email an email in the end of the task sequence to notify the technician that the OS deployment was done, therefore creating a script which then ended up as a blog post at Deployment Research about two years ago. This week I’m running a Mastering Windows 7 and 8.1 OS Deployment using Lite Touch and Zero Touch in Minnesota and there where some requests on the subject so I decided to create a new version of the script and this time it is a PowerShell script instead. One of the request was to be able to send and email to the administrator that does the deployment (in Lite Touch) using the login name, so that need to to be taken under considerations to.

The script is tested in MDT 2013 but should work perfect in MDT 2012 Update 1 as well and it works when deploying Windows 8 and above.

Lite Touch

First you need to download the script and sample customsettings.ini  from here and store the PowerShell it in the MDT Scripts folder.

Option Number One: Using the UserID directly

Update the CustomSettings like this. (you can copy and paste from the sample customsettings.ini files)

The name used to login to the LTI Wizard is defined as UserID and that is then used as a part of the email address to send it to.

Option Number Two: Using the UserID with translation.

In this case we create a section for every user account that should have an email an can logon. As an example, if you login as Administrator (don’t use that account!) an email would be sent to, but you can have any other setting for that userID if you liketo.

Update the CustomSettings like this. (you can copy and paste from the sample customsettings.ini files)

Add a step in the TaskSequence.

Zero Touch

First you need to download the script and sample customsettings.ini  from here and store the PowerShell it in the MDT Package Scripts folder.

In the ZTI we don’t really have a UserID and therefore we just send the email to a predefined email address and cc to an other.

Update the CustomSettings like this. (you can copy and paste from the sample customsettings.ini files)

Add a step in the Task Sequence like this.

Update the settings package and the MDT Package.

If you need a SMTP server to test against, read this


Categories: MDT

Nice to Know–A simple and small SMTP Mailserver för Dev/Lab/Test (SMTP4DEV)

Thu, 06/12/2014 - 01:51

In the field, at hotel rooms, in VM environments, Demo setups and many other situations your are in the situation that something needs to be able to send an email and installing an Exchange Server at that time might be very wrong. So I have been using a really nice SMTP server that basically accepts anything, with any kind of settings and that has the ability to present all these mails in a single view. Extremely “handy” to have. Download it from

I use it to test OSD scripts, Orchestrator runbook jobs and things like that.

Snapshot of the UI

there are others to, but this one seems to be stable and fairly simple to use. Don’t forget to make sure that port 25 is open.


Categories: MDT

Nice to Know – Get rid of all junk before Sysprep and Capture when creating a reference image in MDT

Thu, 06/05/2014 - 10:06

When you create a reference Image it will in most cases it will be updated with patches and some more patches and then some… That will make the image bigger and therefore the deployment of that image will take longer and consume more network resources. That can be corrected by getting rid of superseded patches, junk, temp files and much more. MDT does take care of much using the wimscript.ini during the capture process, but not all, not the old updates among other things.

The Solution

Since MDT is the preferred method to create reference images you can download the script, import it as an application and then run the application just before the Sysprep and Capture step. The Script works for the following versions of Windows:

  • Windows 7 SP1
  • Windows 8
  • Windows 8.1 Update
  • Windows Server 2008 2 SP1
  • Windows Server 2012
  • Windows Server 2012 R2

However, to make this work in Windows 7 and Windows Server 2008 R2 you need to add a hotfix to Packages in MDT.

The script will use clenmgr.exe in all client versions of Windows. In Windows Server 2008 R2 it also uses clenmgr.exe, but it is never installed, instead it is copied from the SXS folder, that way we don’t need to install Desktop Experience. On Windows 8 and Server 2012 the script also runs the dism /online /clenup-image /startcomponentclenup and on 8.1 and server 2012 R2 the script adds the /Resetbase to make it impossible to remove patches.

Step By Step (kind of) Download the script

Download the script from here

Import it in MDT

Open the Deployment Workbench and browse to the Application node and import the folder you downloaded, giver it a name and as command line you type:

cscript.exe Action-CleanupBeforeSysprep.wsf 


Modify the Task Sequence

Open your task sequence and before the Sysprep and capture step, something like this works fine.


Add the HotFix (only for Windows 7 SP1 and Windows Server 2008 R2)

You need to add the patches in the deployment workbench. If you would like the deployment of the reference image to a bit faster, create three folders put the correct patch in each folder and then create corresponding Selection Profiles and modify the Task Sequence to use them. You download the update here

Here you can see the patches imported in the Deployment Workbench.

The patches you need.


Here you can see the Selection Profiles and the selection in one of them.

The Selection Profiles.

Here you can see how the modification in the Task Sequence.

The Task Sequence modification to inject the the correct patch to the correct OS.


Categories: MDT

TechEd NA 2014 – Here is my sessions on Channel 9

Sun, 05/25/2014 - 07:36
Top OS Deployment Issues with Answers from Experts

Bare Metal OS Deployment in Microsoft System Center 2012 R2 Virtual Machine Manager: This Is How It Is Done!

Building the Perfect Windows 8.1 Image

Categories: MDT

Back to Basic – CustomSettings.ini – Sample 3 and a bunch more

Mon, 05/19/2014 - 10:59

Customsettings.ini is one of those text files in MDT/ConfigMgr that has a major impact on the solution, badly written the solution is a pain in the… correctly written and it works like magic…

A while back I created sample package, but I only published 2 of the samples in the package and now it is time for the rest of them:

  • Disable OSInstall.ini
  • Setting based on Computer type and location.ini
  • Settings based on Computer type.ini
  • Settings based on Default Gateway.ini
  • Settings based on MAC for servers.ini
  • Settings based on MAC.ini
  • Settings based on Model.ini
  • Settings based on TaskSequenceID.ini
  • Settings based on UserExit-Alias.ini
  • Settings based on VB Calculation.ini
  • Settings based on Virtual Machines.ini
  • Settings for UDI.ini
  • Using the SMSTSOrg.ini

To try them out in your environment you can just run:

cscript.exe “Path to your MDT folder”:\Scripts\ZTIGather.wsf /Inifile:”The Path to the .ini file you would like to test”

You can download the samples here:

(Note all these files has been made upon request from customers, so if you need one that I down have, ask me…)


Categories: MDT

Nice to Know – Switch from ImageX to DISM in MDT

Mon, 05/19/2014 - 09:09

Be default the capture process in MDT 2013 uses ImageX to capture the image, there is nothing wrong with that, well, it takes time since Imagex takes about 15 minutes or more just to scan the file system before it starts to capture the image and maybe you would like to get rid of that time. That is possible by doing some modification to one of the scripts in MDT so that it starts to use DISM.exe instead

The script that needs to be modified is ZTIBackup.wsf and you can download the updated version here. (Please make sure you have a copy of the previous version so that you can go back for any reason.)

As a bonus this also fixes the problem to append the wim file to an existing wim file.

  1. Download the file from here:
  2. Rename the Scripts\ZTIBackup.wsf to ZTIBackup.old
  3. Clear the Internet download flag from the new ZTIBackup.wsf.
  4. Copy the new ZTIBackup.wsf to the Scripts folder.



Categories: MDT

Nice to Know – MPIO “may” need to be configured correctly to increase performance when using Storage Spaces in Windows Server 2012 R2

Mon, 05/19/2014 - 08:15

This happens currently once a week, someone calls me and say “I’m using Storage Spaces with or without Scale Out file server and the performance is #”"!&%%&##”

There is many reasons but a very common is that MPIO be default is set to Round Robin and that is worse then bad.

Change the setting for all disks and for new disks as well by running the following command from en elevated PowerShell prompt:

Set-MSDSMGlobalDefaultLoadBalancePolicy LB

Read more here:

Also read the blog from Jose:

Categories: MDT

TechEd NA 2014 – The Scripts from my session – DCIM-B309 – Bare Metal OS Deployment in Microsoft System Center 2012 R2 Virtual Machine Manager

Thu, 05/15/2014 - 08:30

Here is the sample scripts from my session at TechEd NA 2014 (DCIM-B309 – Bare Metal OS Deployment in Microsoft System Center 2012 R2 Virtual Machine Manager: This Is How It Is Done!)


Channel 9:


Categories: MDT

Nice to Know – OS Deployment on TechNet – Check This out!!!

Mon, 05/12/2014 - 10:34

For many years TechNet has been the source of information for IT Pro’s, but in many cases it has been “This is what you could do”, leaving a lot of IT profs in a guessing game. For OS Deployment that has now changed, it is changing into “This is how you should do!” and that is VERY nice!

Go to

And check this out ASAP

(And yes, they hired external resources the help them get the best content ever…)


Categories: MDT

TechEd NA 2014 – PRC06 Deploying and Managing Windows in the Real World – Slides

Mon, 05/12/2014 - 09:15

You asked for the slides after our session, here they are


If you are looking for all the deployment links we talked about, you will find the here



Categories: MDT

Nice to Know–Bare metal deployment in SCVMM using Custom script and Custom resources could fail

Sun, 05/04/2014 - 10:05

The bare metal OS deployment function in SCVMM has the ability to be customized by adding custom scripts (also know as GCE). Basically there is two ways to do this, you either make sure the  script is in the WinPE image or you add it using recourses in the SCVMM Library. There are two locations for those scripts, Pre and Post and the problem seems to be true when we are doing Pre OSD GCE’s. So how do I know it fails then?, well that is not that hard. It will give you a very informative message in the job log like this:

Error (2941)
VMM is unable to complete the request. The connection to the agent on machine has been lost.
Unknown error (0x80072efe)

Recommended Action
Ensure that the WS-Management service and the agent are installed and running and that a firewall is not blocking HTTPS traffic.

And if you open the vmmAgentPE.exe.log file on the host you are deploying you will se this:

058C.05C4::05/04-12:23:13.425#00:OSDDownloadFileFromUrl.cpp(88)[000000000306EB: ThrowOnWin32Failure : 80072efe. Operation attempted WinHttpReceiveResponse(m_hRequest, NULL)
058C.05C4::05/04-12:23:13.425#00:exceptions.cpp(97)[000000000306EB: CarmineException::CarmineException: CarmineError: 1051488,  hr: 0x80072efe

If you look at the last file it tries to download you will see that it is trying to download the file and if you check the size of the file you will se that the size is 0 bytes and “carmine” does not like to transfer 0 size files in WinPE.


Modify the in notepad.exe and type whatever you like, close it, done. If you try once more it should work.


Categories: MDT

Hands-On LAB at LabCenter–Mastering Hyper-V 5-7 May 2014

Mon, 04/21/2014 - 10:58

Friend, I have an upcoming lab on Hyper-V 2012 R2, so if you would like to know what you really need to know about Hyper-V including management by PowerShell, VMQ, RSS, Architecture, Installation, Configuration, Migration and much, much more you should sign up for the class.


Categories: MDT

PowerShell is King – HP Scripting Tools for Windows PowerShell v1.1 is released

Mon, 04/21/2014 - 08:02

The 1.1 version supports PowerShell v3 and v4 and that means you can install it on Windows 8.1 and Windows Server 2012 R2. There is also some added CMDlets plus some minor changes.

Download it from!tab=features

Release notes is here (read them)


Categories: MDT

PowerShell is King–Use PowerShell to find out the file information in a file repository

Wed, 04/16/2014 - 06:45

This morning I was scheduled to install some software, one part of HP Service Pack was not installed, so I made the decision to just install that component, rather then re-running that Service Pack Setup (HPSUM). The quarion is, what file contains what I need? All files has just the CPXXXXXXX.exe? If I select properties from a file in explorer, I can see that it contains this:

Hmm, how could  I get that using PowerShell? Could it be “"Get-ChildItem”?

Running Get-ChildItem -Path \\cloud\dfs\Software\Applications\HP\swpackages -Filter *.exe gives me this:

and that does not help, but if adding | Select * will give me this:

So, the info is there, right, now how could I get rid of the junk…

Hmm, there is something called VersionInfo, lets try that…

Get-ChildItem -Path \\cloud\dfs\Software\Applications\HP\swpackages -Filter *.exe | Select-Object Name,VersionInfo | Out-GridView

Getting closer, bet still to much junk…

Maybe, this would work?

Get-ChildItem -Path \\cloud\dfs\Software\Applications\HP\swpackages -Filter *.exe | Select-Object -ExpandProperty VersionInfo | Select-Object -Property ProductName, ProductVersion, Filename | Out-GridView

Lets try that:

Yes, that seems to give the the result I like.


Categories: MDT

Nice to Know–Management Pack for Windows Server 2012 R2 Hyper-V has an Issue

Wed, 04/16/2014 - 04:52
The Issue:

ID: 26001 – Microsoft.SystemCenter.VirtualMachineManager.2012.Report.VPortUsageCollection

Got null results from Select Connection from Msvm_SyntheticEthernetPortSettingData where InstanceId=

The “Solution”:

To be honest, there is no real solution so far, the reason is that the MP is looking for the WMI data in the “old” V1 place, and in R2 that is gone, that information is in the new namespace V2. There should be a new MP, but so far I have not seen one. So the only solution is to turn this collector of and that solves only one issue. The event log looks “nice”. In my world that’s is not a solution…

Read more:

Categories: MDT

TechEd–New Session: Bare Metal OS Deployment in Microsoft System Center 2012 R2 Virtual Machine Manager: This is How it is Done!

Tue, 04/15/2014 - 20:46

A very nice surprise.

At TechEd they have added more sessions to the DataCenter track and that means I’ve got a new session!

Bare Metal OS Deployment in Microsoft System Center 2012 R2 Virtual Machine Manager: This is How it is Done!

System Center Virtual Machine Manager 2012 R2 has bare metal OSD deployment built-in. This session is all about that. You will learn how to do discover, how to deal with drivers, networking and you will learn how to troubleshoot the process and most of all you will learn how to NOT troubleshoot, since you will learn how to do it correctly. You will also see how to deal with hardware configuration, firmware and such, expect lots of demos and PowerShell.

As you can see the session will be focusing on bare metal deployment, something I have been doing for many years now. Besides the actual deployment I will also show you how to do the network and storage related configuration to get VMQ to work correctly and some other stuff. This is going to be fun!

Note: If you are going to TechEd and you do join the session, please, step up to the podium and say hi.


Categories: MDT

Event – CA Accelerate IT PRO Camp, Stockholm 10,22,23 of April 2014 – Windows Client deployment and then some…

Mon, 04/07/2014 - 16:31

(in Swedish)

LabCenter kommer tillsammans med Microsoft att genomföra en dags workshops kring Windows 8 och Windows 8.1 klienten med fokus på administration och utrullning I föreatags miljöer. Cirka halva dagaen är förläsningar och demonstrationer och den andra halvan är hands-on. av dom 3 event vi kör så är 2 fullbokade, men det finns ett tillfälle med cirka 10 platser kavr och det är där du kommer in!

Vi visar hur du kan gå från en tidigare version av Windows och Office till en mer modern miljö och kunna dra nytta av de senaste teknologierna kring säkerhet och mobilitet.

Under dagen går vi igenom grunderna i Windows 8/8.1 och Office 365 klientutrullning genom interaktiva presentationer, demos och hands-on laborationer.

  • Introduction to Windows 8.1, Office 365 ProPlus and Office 2013
  • Image Creation, Lite Touch/Zero-Touch Deployment
  • Strategies & Office 2013 Deployment
  • Windows to Go Creation and Deployment
  • Windows 8/8.1 Security
  • Application Delivery with App-V
  • User Personalization with UE-V

Datum att välja på:
Stockholm 10 april 2014 – Fullt!
Stockholm 22 april 2014

Stockholm 23 april 2014 – Fullt!
Plats: LabCenter, Oxtorgsgränd 2, 111 57 Stockholm
Längd: 1 dag (09.00-16.30)
Instruktör: Mikael Nyström
Workshopen är kostnadsfri.

Läsa mer och anmälan –

Categories: MDT

Reduce DNS Client Cache in Windows Server 2012 R2

Sun, 04/06/2014 - 12:48

A very good friend (and Geek) wrote a post about modifying the cache when using RDP Gateway. A very common issue we have is when we deploy, configure and re-construct the infrastructure is that the gateway is keeping the cache a bit to long.

Get the solution from Markus Lassfolk


Categories: MDT

TechX–Azure In Sweden next week!–Don’t MISS it!

Sun, 04/06/2014 - 12:43

(In Swedish)

Nästa vecka är det TechX Azure ( och då kör jag och Markus Lassfolk hela 6 sessioner, vilket gör att vi kommer att vara där hela dagen och köra!, så vill man så kan man vara I Vision hela dagen och njuta av en tillställning med oss. Vi kommer att bjuda på allt som har med IaaS att göra, Hybrid kopplingar, System Center, Azure AD och mycket mer än så. Här har du agendan:

om du inte har anmält dej så kan det finnas platser kavr (inte säker, men jag tror det)


Categories: MDT

PowerShell is King–Measure disk performance for IOPS and Transfer rate

Wed, 04/02/2014 - 11:08
The need

Since I build datacenters I need to verify performance and you can do that using SQLIO. But there is a lot of parameters, a lot of typing and to make testing a bit more consistent I was reading Jose Barreto’s blog and that gave me inspiration to create a PowerShell script that is a bit more complete and here you can see the result of it. We use this to measure performance on local disks, SMB storage, Storage Spaces, SAN storage, iSCSI storage, basically everything, now it is easy to “spot” the issue, since we have seen the numbers so many times.

Output sample in table format.

Output in Grid view.

The Download

You can download the script from here:

To use it you need to have SQLIO from Microsoft and you need to store the SQLIO.exe file in the same folder as the script, this way it is easy to move around the test tool as a kit, since SQLIO does not really needs to be installed, the download is an MSI file, so you need to install it once or extract it

You can download SQLIO from here:

The script it is rather easy, it is basically a wrapper for SQLIO.exe but it gives you an output as a table or in a grid. There is two options to measure workload, you either measure IOPS or Transfer rate.

The howto

.\Measure-DiskPerformance.ps1 -TestFileName test.dat –TestFileSizeInGB 1 -TestFilepath C:\VMs -TestMode Get-LargeIO -FastMode True -RemoveTestFile True -OutputFormat Out-GridView


-TestFileName test.dat

The name of the file, it will create the file using FSUTIL, but it checks if it exists and if it does it stops, you can override that with the –RemoveTestFile True

–TestFileSizeInGB 1

Size of the file, it has fixed values, use the TAB key to flip through them

-TestFilepath C:\VMs

The folder, can also be an UNC path, it will create the folder so it does not need to exist.

-TestMode Get-LargeIO

There is too test modes Get-LargeIO or Get-SmallIO, you use Get-LargeIO to measure the transfer rate and you use Get-SmallIO to measure IOPS

-FastMode True

Fastmode true runs each test for just 10 seconds, it gives you a hint, if you don’t set it or set it to false it will run for 60 sec (it will take a break for 10 sec between each run)

-RemoveTestFile True

Removes the test file if it exists

-OutputFormat Out-GridView

Choose between Out-Gridview or Format-Table


Categories: MDT