New tool: ConfigMgr PXE Boot Log

Today I’m releasing a new tool for ConfigMgr admins and IT support staff!  This tool displays PXE boot events in an easy-to-view format and provides a history of PXE boot attempts on a distribution point during a selected time period. The tool can also display any records that exist in ConfigMgr associated with a device based on its SMBIOS GUID. The ‘log’ entries returned come from the status messages sent by the distribution point and not from the SMSPXE.log.

PXEBoot

The tool can help in troubleshooting PXE boot failures such as devices not being targeted with a deployment, duplicate records in the ConfigMgr database, or mismatched unique identifiers because of hardware changes.

Requirements

  • Minimum PowerShell 5
  • Minimum .Net Framework 4.5
  • Minimum read-only access to the Configuration Manager database (db_datareader role)

Installation

The tool can be downloaded and installed from the Technet Gallery.

Configuration

  • For first time use, click the “More Options” menu (3 dots, top-right) and choose Settings
  • Enter your Configuration Manager SQL Server and Database
  • Optionally select to view dates and times in your local timezone instead of the default UTC.
  • Click Save.

Using the Tool

  • Select a PXE-Enabled distribution point from the drop-down list.
  • Select a time period to view results
  • Click Retrieve Log
  • Double-click any log entry to retrieve the associated record/s for the device in ConfigMgr

Source Code

Source code is available on GitHub

PXE Boot Fails After Computer Rename

Today I had an interesting PXE boot problem where a computer kept aborting the PXE boot. So I checked the SMSPXE.log and found that there were no advertisements for that machine:

Client boot action reply: <ClientIDReply><Identification Unknown=”0″ ItemKey=”16777684″ ServerName=””><Machine><ClientID/><NetbiosName/></Machine></Identification><PXEBootAction LastPXEAdvertisementID=”” LastPXEAdvertisementTime=”” OfferID=”” OfferIDTime=”” PkgID=”” PackageVersion=”” PackagePath=”” BootImageID=”” Mandatory=””/></ClientIDReply>
F0:1F:AF:6C:05:53, 4C4C4544-0047-5310-8034-C3C04F595931: no advertisements found
F0:1F:AF:6C:05:53, 4C4C4544-0047-5310-8034-C3C04F595931: No boot action. Aborted.
F0:1F:AF:6C:05:53, 4C4C4544-0047-5310-8034-C3C04F595931: Not serviced.

The machine was previously deployed with SCCM and we were rebuilding it. The computer was definitely in a collection with an OS Deployment advertisement that was working fine on other machines. It turns out that the computer had been renamed, and the computer record for the old name was still present in ConfiMgr. I ran the following SQL query to find the computer name of any records in the database using the MAC address of that machine, then I deleted the record from the ConfigMgr console. After this, the PXE boot worked fine 🙂

select sm.ItemKey, Netbios_Name0, MAC_Addresses0, GUID, si.SMBIOS_GUID0, Hardware_ID0
from System_MAC_Addres_ARR sm
inner join MachineIdGroupXRef mx on sm.ItemKey=mx.MachineID
inner join System_AUX_Info si on sm.ItemKey=si.ItemKey
where MAC_Addresses0='F0:1F:AF:6C:05:53'

ItemKey 16777684
Netbios_Name0 My-Computer-lt-05
MAC_Addresses0 F0:1F:AF:6C:05:53
GUID GUID:1dba29f3-350e-4a4c-a171-1e2ef1fe8f95
SMBIOS_GUID0 4C4C4544-0047-5310-8034-C3C04F595931
Hardware_ID0 2:84912D65A9328FFCBB0CA60D9EC952D9A21AA955