Integrate Microsoft Diagnostics and Recovery Tools (DaRT) into the MDT boot image

I recently found out Microsoft Diagnostics and Recovery Tools (I'll refer to it as DaRT thereafter) was quite handy. It is part of Microsoft Desktop Optimization Pack, which is available for free if you're covered by Software Assurance.

So basically the goal here it to integrate the tools available in DaRT into the WinPE boot image generated by MDT.

Looks handy, doesn't it?
DaRT is distributed as an installer which requires Windows 7 setup files to generate a custom WIM encapsulated into an ISO. Sounds quite cool but that's one more thing to maintain and update with new drivers... Since the DaRT installer uses WinPE that shouldn't be too hard to figure out a way to add some more files to make it work.

Took me a little while to figure out but it ended up working so I'm sharing the technique with you guys:

You will need: Windows AIK, the DaRT installer, MDT 2010 and some kind of archive utility like 7-zip.

You will also need to do this twice, once for the x86 Boot Image and once for the x64 Boot Image.
  1. Acquire the MS DaRT installers for x86 and x64 located in the MDOP iso available through MS Volume Licensing or MSDN.
  2. Follow the wizard to create the 2 ISOs, 1 for x86 and the other one for x64.
  3. Create a directory called the following directories: c:\DaRT\ERD and c:\DaRT\files (or whatever/wherever you like).
  4. Expand the ISOs to c:\DaRT\ERD\x86 and c:\DaRT\ERD\x64 (using 7-zip for example).
  5. Open a privileged command prompt and use the following command:
    C:\Program Files\Windows AIK\Tools\Servicing>dism /Mount-Wim /wimfile:c:\DaRT\ERD\x86\sources\boot.wim /mountdir:c:\DaRT\files\x86 /index:1
    and
    C:\Program Files\Windows AIK\Tools\Servicing>dism /Mount-Wim /wimfile:c:\DaRT\ERD\x64\sources\boot.wim /mountdir:c:\DaRT\files\x64 /index:1
  6. At this point you can delete c:\DaRT\ERD if you want.
  7. Go to c:\DaRT\files\x86 and x64. You should see the following directories:
    Program Files
    Program Data
    sources
    Users
    Windows
  8. Delete Program Data and Users.
  9. Go to Program Files, delete all directories but "Standalone System Sweeper".
  10. Go to sources, delete all directories but "recovery".
  11. Go to Windows, delete all directories but "System32". Then, under System32 sort files by date. Delete all files and folders that are not timestamped as of the day you created the ISO. That should leave you with 28 files (37 if you have the debugging tools). Additionally, delete winpeshl.ini as it interferes with the MDT wizard.
  12. At this point we're pretty much done.
  13. Go to MDT, right click on your Deployment Share > Properties.
  14. In both Windows PE x86 Settings or Windows PE x64 Settings at the Extra Directory to add, specify C:\DaRT\files\x86 for the x86 boot image and C:\DaRT\files\x64 for the x64 boot image (or any other folder you may already be using/wanting to use).
  15. Rebuild your deployment share.
You're done.

Namaste.

Updating the BIOS programmatically in MDT...

Mikael Nystrom has a very interesting blog post over at deploymentbunny.com on how to update the BIOS on HP, Dell and Lenovo computers.

The source code is mostly functional but you will need to be careful with the non-unicode characters here and there.

Namaste.

Make an MDT task sequence resolution independent.

You will often find yourself with a deployed computer that doesn't match the resolution it's supposed to use. It's quite annoying, especially on laptops (have you seen how ugly Windows is when displayed at 1024x768 on a 1920x1200 screen?).

There is a very easy way around that:

  1. Go to your task sequence properties.
  2. Go to the OS info tab then click on "Edit Unattend.xml"
  3. WSIM will launch, navigate to: Unattend\Components\1 windowsPE\x86_Microsoft-Windows-Setup_neutral (replace x86 with x64 if using a 64-bit OS, of course)
  4. Delete the Display component.
  5. Navigate to Unattend\Components\7 oobeSystem\x86_Microsoft-Windows-Setup_neutral (replace x86 with x64 if using a 64-bit OS, of course)
  6. Delete the Display component.
  7. Save and exit WSIM.
Congrats, you now have a resolution independent task sequence. It is highly recommended to have up to date drivers available in your deployment process.

Namaste.

Target an advertisement base on software version in SCCM

Let's say we want to advertise an update to Adobe Reader only to clients with outdated versions (anything older than 10.0.1).

  1. Create a new collection.
  2. Edit the membership rules.
  3. Click on Edit Query Statement.
  4. At the bottom press "Show Query Language".
  5. Paste the following:
    select SMS_R_SYSTEM.ResourceID,SMS_R_SYSTEM.ResourceType,SMS_R_SYSTEM.Name,SMS_R_SYSTEM.SMSUniqueIdentifier,SMS_R_SYSTEM.ResourceDomainORWorkgroup,SMS_R_SYSTEM.Client from SMS_R_System inner join SMS_G_System_ADD_REMOVE_PROGRAMS on SMS_G_System_ADD_REMOVE_PROGRAMS.ResourceID = SMS_R_System.ResourceId where SMS_G_System_ADD_REMOVE_PROGRAMS.DisplayName like "Adobe Reader %" and SMS_G_System_ADD_REMOVE_PROGRAMS.Version != "10.0.1"
  6. Make edits to match the DisplayName and Version according to the results you want.
You're good to go.

Namaste.

Unable to run reports in ConfigMgr?

You may get the following error message when trying to generate reports:
"The page you are requesting cannot be served because of the extension configuration. If the page is a script, add a handler. If the file should be downloaded, add a MIME map."

To solve that, add the ASP Role Service to IIS in addition to ASP.net.

Namaste.

ConfigMgr Firewall exceptions for Client deployment.

To enable ConfigMgr client deployment, create the following GPO (or update if you already have one):

Computer Configuration > Policies > Administrative Templates > Network > Network Connections > Windows Firewall > Domain Profile

Windows Firewall: Allow inbound file and printer sharing exception: Enabled
Allow unsolicited incoming messages from these IP addresses: SCCM IP Address

Windows Firewall: Allow inbound remote administration exception Enabled
Allow unsolicited incoming messages from these IP addresses: SCCM IP Address

Namaste.

Twitter Delicious Facebook Digg Stumbleupon Favorites More