How to migrate only one specific folder with USMT.

Posted by mathias

I really had to scratch my head to solve this task. Maybe there’s an easier way to do this but this is how I solved a problem with a customer that only wanted to migrate one specific folder with USMT. All their users save all their personal data on their C-drive in a folder with a common name. I’ll call the local folder “Personal Data” in this blog post.

USMT is not good at opting in specific folders only. It’s more built to migrate everything plus that extra folder you need and then opt out some folders or filetypes that shouldn’t be included. But how do you exclude the C-Drive and at the same time include only one folder from the same drive?

Simply exclude C:\ and Include the “Personal Data”-folder and use the parameter to disregard all profiles. USMT can handle an Inclusion that is part of an Exclusion as long as the folders are in different components in the XML-file. See below. (Look at this article on Technet for more info on how USMT handles conflicts and precedence.)

That almost works.

It turns out USMT has some very quirky behavour. It did migrate my “Personal Data” folder but it also migrated all my *.wav default sounds in the Windows folder, some fax-coversheets and even some *.dll files that definitely wasn’t specified by me to be included. So, the solution was to exclude three folders that USMT tried to migrate anyway. The folders that were included by USMT contrary to my settings where these: C:\Program Files,  C:\Windows and C:\ProgramData.

» Continue Reading

Tagged as: , 4 Comments

Build and Capture + Software Updates in Native mode

Posted by mathias

The goal of  this article is to describe how to insert Software Updates into the Base Image, the Windows-image you want to base your Operating System deployment on, in SCCM Native Mode.

In order to shorten the installation time of the operating system for your end-users you want to include as many patches and updates as possible in the image you’re deploying. But you want to include as few programs as possible so that you don’t end up updating your Golden base image every two weeks…

Obviously you will want to update your image with new Software Updates every once in a while – but that will not be manual labour but automated in the task-sequence that builds the Base Image.

I could have written a book about all the things I tried to get this to work… Let’s just establish the fact that Software Updates and in particular WSUS must have been written the morning after some very big Microsoft launch party…  ;-)

That said. I finally managed to get this to work. It took a a week of Googling, trial and error, troubleshooting, late nights and lots of coffee. And the silly thing is that’s it pretty easy to get it to work – if you know exactly what to do. As always.

I’ll summarize what this article does:

  1. Use only one Hotfix (KB2509007).
  2. Use SLP as a parameter for your CM-client.
  3. Check “Allow HTTP for roaming…” and rebuild the boot-image.
  4. Run a script to trigger software updates scan and run it a couple of times!

» Continue Reading


Remove computer from collection after installation

Posted by mathias

I just have to mention this great link. When you’re done with an OS-Deployment and eventually want to remove the computer from the install collection, a common way to do this is with a script in the end of the Task Sequence. But this is a much sexier way to do it, by removing the computer from the CM-server when the status message from the Task Sequence is marked as finished.

Danovich is the author.



Posted by mathias

I noticed a few people have been googling for this so I just thought I’ll post a short how-to on this.

Let me first say that before the combined IE9 + language pack came out I tried to bundle IE9 and the language pack with the Internet Explorer Administrator Toolkit (IEAK). That worked fine but I wasn’t able to deploy that package in the Task Sequence. I don’t know why this didn’t work because the package deployed fine with normal software deployment.

Since then MS has released IE with the integrated language pack, you can find all versions here: 32bit and 64bit

Deploying is very simple. Simply create a package with the following program Command Line,  depending a little bit on which IE9-exe file you’ve downloaded:

ie9-windows7-x86-enu.exe /update-no /quiet /norestart

Advertise the program or put it in your Task-Sequence after “Setup Windows and ConfigMgr”.

Update1 :

If you want to be able to choose between languages for Internet Explorer in your Task-sequence you can always bundle the English IE9-version in your base-image and then run the language-packs on top of that. The language packs for IE9 and Windows 7 are found here.

The language packs come as MSU-files that are installable through the WUSA-command. So to install the 64bit version of the Swedish language pack on top of an English Internet Explorer 9, simply run:

wusa IE9-Windows6.1-LanguagePack-x64-sve.msu /quiet /norestart

Of course, remember to download the matching version of the language pack depending on if you’re using 32- or 64bit Windows.

Important Update2:
Internet Explorer 9 Setup does a really evil thing in the registry. It creates this key:

HKLM\SOFTWARE\Microsoft\Active Setup\Installed Components\NoIE4StubProcessing

This little registry key breaks all Active Setup commands for 64-bit Windows 7! Note that this regkey is not set on the SysWOW64 registry folder so it only applies  to 64-bit Active Setup. Therefore the command that’s supposed to create shortcuts for the taskbar and Start Menu doesn’t run. Instead you might end up with a broken IE9-icon that points to the users Home Directory (i.e. H:) !

Apparently, this key was used in IE5(!) when you wanted the installation to be really, really quiet.

So in order to have a successful installation, delete this reg-key after the installation of IE9. Here’s a link how to do it:

I found the information regarding this bug here.

Was this helpful? Please leave a comment.

[EDIT: WUSA. Not WUSE. Thanks Kcirtap!]


USMT Offline Migration in Windows PE with Hardlinks

Posted by mathias

This is something I wanted to do a long time and thanks to Niall Bradys excellent guide at it was easy. Except for the parts that were hard. :-) There seems to be a few problems with USMT4 at the moment. Especially with 64-bit Windows 7. I’ll tell you in a sec. what I ran into…

I also wanted to make Niall’s Task Sequence a little shorter with VBScript, I like my Task Sequences short and snappy. Or at least, as short as they can be. Peter van der Woude also has a post on this, but hey, I’m using VBScript! :-)

Let’s get on with it. What are we talking about here? User backup of all important files, bookmarks, user profiles and their desktops using Microsoft User State Migration Toolkit v4. We want to do this not from within Windows but during the Windows PE state before we apply a new OS.

The good thing about doing this in Windows PE and with Hardlinks is pronounced Speed. Hardlinks make file copying locally and over the network unnecessary. It needs no extra disk space and there won’t be any locked files as when you’re doing migrations from within Windows. It’s not magic but it’s pretty close.

Also if you have a computer that doesn’t boot into Windows but has lots of important files on it and with a readable disk – this is the only way to copy that data.

The only thing you can’t do with USMT and Hardlinks in Windows PE is if you’re replacing the hardware. USMT with hardlinks in Windows PE mode is for re-installing the computer with a new OS (or OS version) only. For other scenarios you need a server-state store. That method is not covered in this post.

Let’s jump straight to business. Here’s what my Task-sequence looks like, stripped off stuff that’s not important for what we’re trying to illustrate here.

First a short overview of what it does. All the meaty details are further below. You can download the entire Task Sequence here. (Rename it to *.xml and import into SCCM.)

» Continue Reading


No program in the Task Sequence

Posted by mathias

You’re trying to add a program in your Task Sequence but the program in your package doesn’t appear?

This can be one of two things.

Either you’re allowing your users to interact with the program or the program can only run with a user logged on. This is not possible since the task sequence is supposed to be unattended.

Choose “Whether or not a user is logged in” and uncheck “Allow users to interact with the program”.



Error poetry

Posted by mathias

An error occurred during client rendering.
An error has occurred during report processing.
Query execution failed for dataset ‘DataSet2’.
The EXECUTE permission was denied on the object
‘PowerManagementGetPowerCapabilities’, database ‘SMS_CEN’, schema ‘dbo’.

Right, so you’re trying to view a report in Reporting Sevices that you copied from ConfigMgr and now you’re getting this. What is wrong? The SQL-account you’re using to access the Reporting Services database simply has insufficent  rights. That’s what the message above is trying to tell us.

The error in Internet Explorer

After some trial and error I gave my Reporting Services SQL-account rights as db_datareader and smsschm_users in the ConfigMgr database (SMS_<sitecode>). See screenshot below:

After that, reports work great.



Subscribe to reports with SQL Reporting Services

Posted by mathias

Subscribing to reports is really great to show to upper managment. How do you make that work? It’s not too hard actually. You just need to give ConfigMgr a username that has access to the database so that Reporting Services can save the information in the database. I use the same account for that as the account I specified during the installation of SQL Reporting Services. If you run into access problems, check my post above this one.

Right click on your Server below Reporting Services in ConfigMgr.


... after that you should be able to subscribe to reports.



Reporting Services configuration can be tricky…

Posted by mathias

…very tricky indeed. I had no idea how complicated it can be until today.

In this installation of SCCM 2007 R2 (in my case R3) with SP2 – Configuration options where greyed out in the “Copy Reports Wizard” as well as when you right click the Reporting Services Server icon below Reports in the SCCM-console.

According to Microsoft this can happen if you run more than two instances of SQL Reporting Services on the same machine and that’ll make ConfigMgr confused since it automatically selects the default instance of Reporting Server through WMI. I’m pretty sure  this issue happens if you choose “Install but do not configure the report server” during the SQL 2008 installation instead of “Install the native mode configuration”. I have to test this in the lab but I’m guessing the SQL RPS instance never gets created if you don’t configure RPS and therefore SCCM can’t find it.

If you want to fix  this, all you need to do is to open Reporting Services Configuration Manager and configure RPS manually.
» Continue Reading


When the boot image takes forever to load…

Posted by mathias

This one isn’t new but I haven’t encountered this problem until today.
My customers WindowsPE boot image took 1 minute and 15 seconds to load. This is when the PXE-server transfers WindowsPE to the RAM-disk via TFTP. In other words, before the OS-Image gets applied. Adjusting the TFTP-packet size might shorten loading times since larger packets needs fewer acknowledgements from the client. In my customers case it was the fix. With a packet size of 8192 the WindowsPE-image transfer took 26 seconds and with a packet size of 16384 the transfer took only 20 seconds. That’s going from 2mb/s to 7.5mb/s on a 100mbit link.

Previous to SCCM 2007 SP2 you had to download a hotfix but that’s no longer needed. All you need to do is add the following to your registry:

For SCCM 2012 the path is
Add the DWord-value RamDiskTFTPBlockSize and set the decimal value to 16384.

If your SCCM 2007  installation OS is 64bit the path is:


For 32 bit OSes and for SCCM 2007 the path is :


Here is the official Microsoft KB: KB968718

Don’t forget to restart the WDS-service after you change the registry-value.

Update! With SCCM 2012 build 1606 there’s a new registry option called “TFTPWindowsSize” to modify the window size of TFTP packages. (“The receive window is the number of bytes a sender can transmit without receiving an acknowledgment.” – Microsoft).

Jörgen Nilsson has done an excellent comparison on how the two registry values impact speed during the download of the bootimage. So have a look at his site here: