User initiated F12 machine rebuilds with Config Mgr OSD

One of the things I often get asked by customers is how do they make it possible for a user to rebuild a failed machine at their desk, without requiring that the machine is moved to a special collection, or other administrative input.  There are several problems with doing this:

  • Config Mgr & the machine (if the OS is running) remember that the machine has run the OS deployment task sequence before, so will not execute the task sequence again.  The solution to this is to add a mandatory recurring schedule.  However, this means that as long as the machine remains in the collection that the task sequence is targeted at it will try to rebuild itself according to the schedule.
  • If you advertise a slightly different task sequence at the machine collection without making it mandatory this could get around this (the first time at least), but the user will be prompted that there is an optional operating system deployment available for them.  In the standard software distribution case we can suppress this by selecting the "Suppress program notifications" option in the Program.  This option is not available when advertising task sequences, so it is not an option here (as useful as it would be).

One of my colleagues shared a great way of making this happen by leveraging the way WinPE behaves.  One of the options you get inside the task sequence is to specify which client platform that the task sequence can run on. 

OSD-suppress

 

This is useful in a number of situations, one where you are doing an OS upgrade and don't want to rebuild machines that are already at the current release.  In this case you would say it can run on Windows XP but not Windows Vista.  The other situation would be where you are using task sequences to do complicated software installations that need a lot of chained tasks or logic in place, and need to control which OS versions it can run on.  However where your OS is in a steady state (e.g. everyone running Windows Vista SP1) then the client platform targeting doesn't help much for operating system deployment, except in the case I outline above.  In this case we can now target the task sequence at an operating system you don't have in your environment - in the screenshot above I have selected x86 Windows 2000 Service Pack 4 (you don't still have this right?).  In this case we can advertise our task sequence at our collection with our standard machines, make it mandatory & recurring, but because they don't meet the client platform requirement, they will simply ignore the task sequence advertisement.

The magic comes when you PXE boot and run the task sequence inside WinPE.  WinPE just ignores any of the client platform requirements (which makes sense, since it isn't any of those client platforms so if that was set the task sequence could never execute inside WinPE, and also WinPE has no way of knowing what any existing OS on the machine might be).  WinPE will pick up the recurrence and mandatory nature of the advertisement, so the users can execute an F12 rebuild of their machine at their desk with no administrative input.

 Thanks to Andrew Cobb for the idea!