Which WinPE will you get from a PXE boot?

What I like about Configuration Manager is that there is always new things to learn.  I had one of those learning points recently.  I was with a customer and after explaining that during a PXE boot WDS would detect the architecture of the client machine and send the x86 or x64 WinPE that matched, we did a demo.  We booted a x64 machine and after seeing the x64 detection we saw it download the x86 WinPE, proving me wrong.  As I swallowed my pride and they agreed to do some quick testing for me we found out how it really works.  I took that back and confirmed with some other smart folks in Microsoft.

As it turns out, if you watch the SMSPXE.log you will see that there is a look-up that occurs when the PXE client connects.  It finds the newest OSD task sequence advertisement targeted to that machine, looks up the boot WIM architecture, then sends that.  This would seem like a reasonable thing to do, as it is most likely the same WinPE architecture about to be needed by the task sequence.  If, however, you are setup with several task sequences to, say, the Unknown Computers collection then you may or may not get the expected architecture.  PXE doesn’t know which task sequence you are going to run so this “best guess” gets you something to work from when picking your actual task sequence.

So, if you have a x64 capable client you will get an initial WinPE that is x86 or x64, depending on what the boot WIM is for the newest task sequence for that machine.  I didn’t test, but for an x86 machine you should only get an x86 boot WIM.  I have never seen otherwise for that architecture.

I learned something new, and hopefully you have as well.