New Workshop – Unleash the power of MDT 2010 Lite Touch

By arwidmark / September 5, 2010

This November I will be in New York for a unique, 2 day workshop in New York on how to Deploy Windows 7 with WDS and MDT 2010 Lite Touch. This workshop will show you how to get the most out of the free deployment tools from Microsoft and give you invaluable guidance on how to migrate to Windows 7. You can expect a lot of live demos, tips and tricks.

What you get:
– 2 days with real information from real world deployment experts
– A workbook packed with guidance and additional material
– Videos of the demos that you can play over and over again

For more info and detailed agenda, click – Unleash the power of MDT 2010 Lite Touch 

/ Johan

Multicasting – not only for operating system deployment

By arwidmark / September 2, 2010

The Multicast feature in WDS can be used to transfer any file over the network. In my work, since I present trainings from time to time, I need to deploy (large) virtual machines to a bunch of the clients, and for that I use multicast.

Step 1 – Create the WDS name space (enabling a folder for multicast)

In this example I have stored compressed (winrar) version of my virtual machines in a folder called D:\Exported_VMs on my server. One of the vm’s is named DC01.rar.

So we need to create a new namespace name for files in the D:\Exported_VMs folder (note that the folder needs to exist to create the namespace). Use the following command:

WDSUTIL /New-Namespace /NamespaceType:AutoCast /Server:MDT01 /FriendlyName:”Really Large Files” /Namespace:”Really Large Files” /ContentProvider:WDS /ConfigString:D:\Exported_VMs

Step 2 – Get the files via multicast on the client

Then, on the client, to get the large files via multicast First, allow the wdsmcast.exe in the firewall rules (inbound rule), and run the following command.

wdsmcast.exe /verbose /transfer-file /server:MDT01 /namespace:”Really Large Files” /SourceFile:”DC01.rar” /DestinationFile:”C:\VMs\DC01.rar” /Username:TSLAB\BuildAccount /password:”P@ssw0rd

Note that target folder must exist, otherwise wdsmcast fails.

The wdsmcast client runs best, and is only supported, in WinPE, but you can also start it in the running operating system. That however is not supported and has proven, at least in my testing, not being as reliable as running it in WinPE.

/ Johan

SP1 (beta) for Windows Server 2008 R2 solves Hyper-V crash issues on newer hardware

By arwidmark / September 1, 2010

I had the opportunity to go onsite for a training this week, and when preparing the machines for the training they all crashed when the hyper-v role was deployed. After some investigating we narrowed it down to the video driver, when using the Standard VGA driver everything worked, but as soon as we added the (Intel) video driver – the machine crashed.

These were Intel i5 CPU machines, and we already had the 975530 hotfix deployed (needed for i5 and i7 CPU’s). But we still got the crash.

SP1 (beta) for Windows Server 2008 R2 solved the problem, and we had no issues for the entire training,,,

/ Johan

Domain Policies that break MDT 2010

By arwidmark / July 29, 2010

If you have certain domain policies, like renaming the administrator account or setting a legal disclaimer at login, those policies will break MDT 2010. Group Polciies that deploy application may also fail if they are executed when the task sequence is running.Here are some workarounds…


Option 1 – Use a Staging OU

Use a Web Service to move the computer account to a staging OU during deployment, and move it back to the production OU when deployment is completed. Maik Koster has a great post about that:

Option 2 – Prevent the Group Policy to apply as long as the deployment is running

I have seen quite many ways for this, all from creating additional variables to check for, to modifying the built-in script. The simplest solution I have found is simply to add a WMI filter to the Group Policy, so that it does not apply until the deployment is done.

The obvious way would be to check for the existenece of the C:\_SMSTaskSequence folder, but due to the way WMI filter works (or rather not works) it’s better to check for the existence of the C:\Windows\Temp\DeploymentLogs folder. That folder is not created until deployment is completed.

Create thw following WMI Filter and link it to the Group Policy

Select * From CIM_Directory Where Name = ‘C:\\Windows\\Temp\\DeploymentLogs’

Note: Make sure that you don’t have such folder in the wim you are deploying…

Option 3 – Postpone the domain join process

I do like option 1 the best, but yet another solution is to postpone the domain join process. Here is a good article by Keith Garner that explains how to do this.

/ Johan

Have you downloaded the Windows 7 and Windows Server 2008 R2 SP Beta yet?

By arwidmark / July 28, 2010

The Windows 7 and Windows Server 2008 R2 SP1 Beta helps keep your PCs and servers on the latest support level, provides ongoing improvements to the Windows Operating System (OS), by including previous updates delivered over Windows Update as well as continuing incremental updates to the Windows 7 and Windows Server 2008 R2 platforms based on customer feedback, and is easy for organizations to deploy a single set of updates.

The Windows 7 and Windows Server 2008 R2 SP1 Beta will help you:

  • Keep your PCs supported and up-to-date 
  • Get ongoing updates to the Windows 7 platform 
  • Easily deploy cumulative updates at a single time 
  • Meet your users’ demands for greater business mobility 
  • Provide a comprehensive set of virtualization innovations 
  • Provide an easier Service Pack deployment model for better IT efficiency

The public beta is best suited for IT pros, tech enthusiasts and developers who need to test the service pack in their organization or with the software they are developing.

In order to download and install the Windows 7 and Windows Server 2008 R2 SP1 Beta you must currently have a Release to Manufacturing (RTM) version of Windows 7 and Windows Server 2008 R2 already installed. The Beta is available in English, French, German, Japanese and Spanish.

To learn more about piloting, deploying and managing Windows 7, visit the Springboard Series on TechNet.

/ Johan

MDT 2010 Update 1 – General Warning

By arwidmark / July 28, 2010

So you want to upgrade to MDT 2010 Update 1?

Please be aware of that the rule processing has changed a bit, meaning you may need to add rules for wizard panes you did not have to in the RTM version of MDT 2010.

As a good example, my good friend Mikael Nystrom (fellow MVP) just called on his way back from a customer, where he had to troubleshoot (and fix) an upgrade they tried.The error they got after upgrade was the infamous “Error: 500 = Variable is undefined” message. After adding the /debugcapture switch Mikael figured out it was a variable missing.

In this case the SkipPackageDisplay=YES was missing in customsettings.ini. The customer didn’t have any packages, but in MDT 2010 Update 1 they still needed to set the variable to skip the pane.

If you plan to upgrade to MDT 2010 Update 1, do the following,

1. Make a copy of your deployment share (if possible to a lab server)
2. Install MDT 2010 Update 1
3. Upgrade the deployment share
4. Test
5. If test is succesful, repeat step 1,3 and 4 for the other deployment shares

/ Johan

MDT 2010 – Setting the Computer Description in AD without a webservice

By arwidmark / July 21, 2010

Quite a few people have asked my how to retrieve the computer description value from the MDT database or the deployment wizard, and then store it in Active Directory as well as on the local machine, system properties. So I decided it was time for a new posting…

This sample does not require a webservice, however, if you don’t mind using a webservice, you can always use Maik Kosters execellent guide:

Setting the Computer Description in Active Directory during MDT Deployments

This article describes the following processes

1. Get the Computer Description value.
2. Store the Description value on the computer object in Active Directory
3. Store the Description value on the system properties of the local computer

Download the sample scripts

Step 1 – Get the Computer Description value.

Built-in to MDT you have two options for this, either by enabling the description feature in the deployment wizard or by storing the value in the MDT database

Option 1 – Enabling the computer description feature in the deployment wizard

  1. Open DeployWiz_Definition_ENU.xml in your favorite editor, search for “Computer Description Format”
  2. Remove the comments () around the paragraph starting with

    You can also give your computer a friendly description… see this image


  3. Configure your customsettings.ini with the following (the Description field is on the same pane as Configure the computer name).
    [Settings] Priority=Default
    [Default] OSInstall=Y

    When you start the deployment wizard the configure computer name screen will look like this:


Option 2 – Setting the value in the MDT database

If you have set the value in the MDT database, you need to either query the ComputerIdentity table (because the built-in view doesnt list the description value), or update the view. In this example I query the ComputerIdentity table directly.

You need to add a custom property into customsettings.ini for the description property, and I selected to also set the ComputerDescription value so that we are consistent with using the wizard which sets that value. Another option is to take care of that in the scripts, checking for either Description or ComputerDescription values, but it’s a bit easier simply to setComputerDescription to be the Description value that we get from the database.Configure your customsettings.ini with the following:

[Settings] Priority=CIdentity, Default
Properties=Description, ComputerDescription

[Default] OSInstall=Y

[CIdentity] SQLServer=MDT01
Parameters=UUID, AssetTag, SerialNumber, MacAddress

Step 2 – Store the Description value on the computer object in Active Directory

  1. Download the sample scripts. 
  2. Copy ZTISetComputerDescriptionInAD.wsf to the scripts folder in your deployment share.
  3. Create a custom action in the State Restore phase, any place will do, I added the action to the Custom Tasks group. Use the following settings
    Type:  Run Command Line
    Name:  Set Computer Description in Active Directory
    Command:  cscript.exe “%SCRIPTROOT%\ZTISetComputerDescriptionInAD.wsf”
    Load the user’s profile: Selected
    Note: The account that you use must have permissions in Active Directory to modify computer object attributes.


Step 3 – Store the Description value on the system properties of the local computer

  1. Download the sample scripts. 
  2. Copy ZTISetComputerDescriptionLocally.wsf to the scripts folder in your deployment share.
  3. Create a custom action in the State Restore phase, any place will do, I added the action to the Custom Tasks group. Use the following settings
    Type:  Run Command Line
    Name:  Set Computer Description Locally
    Command:  cscript.exe “%SCRIPTROOT%\ZTISetComputerDescriptionLocally.wsf”

 / Johan


Beyond Unsupported – Windows XP SP3 Deployments

By arwidmark / July 20, 2010

When deploying Windows XP there a few tricks you can use to do the following.

1. Have a single image for all your machines
2. Inject storage drivers offline, eliminating the need for rebuilding your image.

The areas that you may want to use unsupported tweaks for are the following:

HAL Replacement

In 2005 I wrote my first general purpose script for HAL replacement, and back in 2008 it was still the most downloaded script on the myitforum website. The most up to date script for HAL replacement (that I know of) is maintained by Michael Petersen in Denmark


Handling Multiple CPU Vendors (Intel & AMD)

If you create an image on a machine with Intel CPU you quickly find that it will bluescreen when deploying it to a machine with AMD Cpu. The reason is that the intelppm service doesn’t work very well with AMD Cpu’s (who would have guessed  🙂  ).

One workaround is to have a script detecting the CPU type, and disable that service when deploying to AMD machines.

Another method is simply deleting the IntelPPM.sys file in C:\Windows\System32\Drivers

Here is a sample script:

Note: If deploying via MDT 2010 and/or ConfigMgr 2007 you need to update the script to reflect the correct path of the registry hive.

Offline injections of Mass Storage Drivers

In Windows XP, injecing storage drivers offline is not supported, unless you use ConfigMgr 2007, then it suddenly is … Mr David Ruhle has put together a nice script that does offline injection for Windows XP…

Updated download link to script:

/ Johan

MDT 2010 Zero Touch – Install Language Packs Offline fails (due to memory)

By arwidmark / June 23, 2010

Another fun day at work… Spend some time troubleshooting the Install Language Packs Offline feature in MDT 2010 Zero Touch.

First of all, the MDT 2010 documentation is incorrect, the Install Language Packs Offline feature is supposed the be added before the Setup Windows and ConfigMgr action, not after.. But that one I knew about already…(it will be updated for docs in MDT 2010 Update 1),

The issue I was having was the ZTIPatches.wsf run successfully, but no language packs where installed. The ZTIpatches.log file revealed an error code 14 in it (but still said successful). No luck there…

But after reviewing the BDD_pkgmgr.log.txt (thanks Ashwin for pointing out), I found something interesting… see below

2010-06-23 22:50:59, Info                  CBS    Failed to submit the Windows Error Report. [HRESULT = 0x800705aa – ERROR_NO_SYSTEM_RESOURCES] 00000d40 (F) STATUS_NO_MEMORY #4690359# from CCSDirectTransaction::PrepareForCommit(…)
2010-06-23 22:50:59, Error                 CSI    00000d40 (F) STATUS_NO_MEMORY #4690359# from CCSDirectTransaction::PrepareForCommit(…)[gle=0xd0000017]

The answer… Memory… The virtual machine I was testing on only had 512 MB of memory, after increasing to 1024 MB everything worked fine… So, shorthand, the Install Language Packs Offline features requires more than 512 MB of RAM, even on x86 Windows 7.

/ Johan

Page 2 of 15