Did you ever read the title for a blog entry and have no idea what the posting is about?  Well, this one might fall into that category.  So first, some background information straight from the Microsoft System Center Configuration Manager 2007 documentation (http://technet.microsoft.com/en-us/library/bb633291.aspx):

To deploy an operating system to a new computer without stand-alone media that is not currently managed by Configuration Manager 2007, the new computer must be added to the Configuration Manager 2007 database prior to initiating the operating system deployment process. Although Configuration Manager 2007 can automatically discover computers on your network that have a Windows operating system installed, if the computer has no operating system installed you will need to import the new computer information by using the Import Computer Information Wizard. This wizard supports importing information about a single computer, or importing information about one or more computers from an external .csv file.

Simple enough, but not very convenient: in order to do the import you need to have the MAC address and optionally the SMBIOS UUID of the computer.  To get the MAC address of a computer that doesn't yet have an OS, you'd probably need to turn on the computer and go into the BIOS setup, write down the 12-character hex value, then go back to the server and type it in -- accurately.

So ideally we would like to automatically add the computer to the ConfigMgr database just-in-time.  Now, there are two scenarios that can be used with ConfigMgr to deploy an OS to a new computer:

  • Boot media: inserting a CD or USB key into a computer containing a ConfigMgr-customized version of Windows PE that starts the deployment process.
  • PXE boot: network booting a ConfigMgr-customized version of Windows PE that starts the deployment process.

There are different challenges in each of these scenarios, so we'll focus on only the first one for now.  When you boot a computer using ConfigMgr boot media, a wizard will start.  The first screen don't require that the computer be present in the ConfigMgr database, but in order to complete the wizard it must be.  So how can we hook into this wizard to do something about this?  That's where the pre-execution hook, described at http://technet.microsoft.com/en-us/library/bb694075.aspx, comes in.

Microsoft Deployment provides a pre-execution hook script that runs a wizard of its own that will call web services to add the computer to the ConfigMgr database, as well as adding the computer to a collection for a task sequence advertisement.  After that's complete, then the rest of the ConfigMgr boot media wizard can be completed and the task sequence starts.

So that brings us to the next challenge: setting up the web services.  See the documentation at http://technet.microsoft.com/en-us/library/bb978399.aspx for the details, although note that step #2 assumes you are using Windows Server 2008, so the steps are slightly different for Windows Server 2003.

Now, for an experiment.  Instead of just trying to explain those steps, I thought it would be useful to record a screencast of the entire configuration process.  So you can play the video below for the whole walk-through, which is about 13 minutes long.

Web Service Configuration and Troubleshooting Walkthrough

Assuming you can get this far, everything should be set up properly.  (There are some potential additional complications: if you have a larger hierarchy, you may need to verify security to connect to each site, since the computer needs to be present in the ConfigMgr database for the computer's assigned site.)  Then you just need to create a new boot image, enabling the pre-execution hook and specifying the URL of the web services.  Yes, it's not a trivial setup.  And yes, troubleshooting is more difficult than it should be.  We'll work on that :-)

Going back to the experiment, if you think screencast recordings like this are useful, please let me know and suggest what additional ones you'd like to see (and hear - adding the audio is the most difficult part).