Had a thought the other day, why do I have to keep PXE booting these devices just to see what file name and other options, if any, I would get from my DHCP, proxyDHCP or IP Relay/Forwarding devices. Surely there must be a PowerShell script that lets you do that? Well there wasn't. I did find one epic PowerShell script written by a dude called Chris Dent, which was simulating a DHCP client. Close enough, so I did some rework on it to make sure it covered the basic PXE bits as well. Great work BTW Chris!
The PXE Fairy and how she works her magic
So in order to PXE boot a modern client, the standard can be deviated and bastardised quite a bit but will only cover the basics here, typically has to set the following options:
Option 60: This gets set to the string of "PXEClient" which then instructs the PXE servers that this is a machine that is trying to boot.
Option 93: This is set to the actual UUID of the machine
Option 97: Contains some information of what kind of machine it is, like UEFI or not etc.
Okay, so what does it look like?
The screen out puts one blob of text per reply that it gets before timing out. So in the picture below you can see one reply from my DHCP server, and one reply from my proxyDHCP server (running on the same IP as I ran the script on):
Okay, great, how do I run it?
You basically feed the script your MAC address, UUID of your liking, and the processor/device capability that you want to simulate. Then the script will create the DHCP request for you. So you can use it to simulate and test your ConfigMgr PSP servers to check that all is working as intended.
That's it! Enough waffle, I just want to click and play, go to the updated script here:
iPXEAnywhere/PXE-DHCP-Test.ps1 at main · 2pintsoftware/iPXEAnywhere (github.com)