June 7 2012

SCCM 2012 PXE not working

I use a maximum of one Google Ad per post to help offset some of my blog hosting costs.


Had a client today whos SCCM 2012 PXE enabled DP wouldn’t work. Upon inspection of the SMSPXE.log file I saw:

Warning: Matching Processor Architecture Boot Image (0) not found


SCCM PXE requires you to have both x64 and x86 images deployed even if you aren’t going to use both of them.

For both of your boot images, ensure ‘Deploy this boot image from the PXE service point’ is ticked and then make sure you ‘Distribute Content’ to your PXE enabled DPs.

Then check your RemoteInstallSMSImages directory for the new WIM and the SMSPXE.log file to see if the new WIM is loaded.

More info here – http://technet.microsoft.com/en-us/library/hh397288.aspx




I use a maximum of one Google Ad per post to help offset some of my blog hosting costs.


April 15 2012

How to tell which PXE/WDS server a machine booted from

I had a requirement to be able to tell which PXE or WDS server my Windows machine had booted from. If a Windows machine boots from PXE, a response packet containing boot server information (such as the IP address and name of the network boot server) is inserted into the registry at HKLMSystemCurrentControlSetControlPXE. I simply used a VBScript to grab this IP address and then used NBTSTAT to resolve the name.

' Obtain IP address of PXE from registry
Const HKEY_LOCAL_MACHINE = &H80000002
strComputer = "."
Set objReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\" & strComputer & "rootdefault:StdregProv")
strKeypath = "SYSTEMCurrentControlSetControlPXE"
strEntryName = "BootServerReply"
objReg.GetBinaryValue HKEY_LOCAL_MACHINE, strKeyPath, strEntryName, arrValue
PXEServerIP = arrvalue(20) & "." & arrValue(21) & "." & arrValue(22) & "." & arrValue(23)

' Resolve PXE Server IP address to name using NBTSTAT
Dim sIP : sIP = PXEServerIP
Dim oWAN : Set oWAN = WScript.Arguments.Named
If oWAN.Exists( "ip" ) Then sIP = oWAN( "ip" )
Dim oWSH : Set oWSH = CreateObject( "WScript.Shell" )
Dim sCmd : sCmd = "nbtstat -A " & sIP
Dim sText : sText = oWSH.Exec( sCmd ).Stdout.ReadAll
Dim PXEServerName : PXEServerName = "Name not resolved"
Dim oRE : Set oRE = New RegExp
oRE.Pattern = "s*(w+)s+<20>"
Dim oMTS : Set oMTS = oRE.Execute( sText )
If 1 = oMTS.Count Then
PXEServerName = oMTS( 0 ).SubMatches( 0 )
End if

' Output PXE Server IP and Name
Wscript.Echo "This machine started via PXE boot from PXE server " & PXEServerIP & " (" & PXEServerName & ")"


July 28 2011


I was having an issue with very slow download of the WinPE WIM image, the screen shows ‘Windows is loading files …’ but it takes between 7 minutes and 1 hour to load the 150mb WIM file over a 100mb link.
After spending a lot of time looking into this, and changing a lot of settings including WDS TFTP block (65536) and window size (64), the RamDiskTFTPBlockSize setting in HKEY_LOCAL_MACHINESOFTWAREwow6432nodeMicrosoftSMSPXE (http://sccm.haas.se/?p=15), the final solution involved settings on the Intel teaming settings on the PXE server:

I needed to leave Jumbo Packets disabled as the client couldn’t handle it and it failed. I increased Transmits and Receive Buffers to maximum values of 2048 and performance was dramatically increased.

Once this was changed, the WIM download was well under 1 minute!


May 28 2010

SuperFlow for SCCM Operating System Deployment via PXE

Microsoft have released an update to their fantastic SuperFlow for SCCM OSD – available from http://www.microsoft.com/downlOAds/details.aspx?familyid=C6F88B60-5DD0-40D4-A7E4-8234B4066D27&displaylang=en.

This SuperFlow provides information about operating system deployment using preboot execution environment (PXE) service points. The SuperFlow provides step-by-step information about how to configure the enterprise network to support Configuration Manager PXE service point deployments. It then describes the steps from creating the deployment package until the operating system deployment task sequence begins to run on the client computer. The SuperFlow interactive content model provides a structured and interactive interface for viewing documentation. This SuperFlow includes comprehensive information about a specific dataflow, workflow, or process. You will find overview information, steps that include detailed information, procedures, sample log entries, best practices, security information, and other information. This SuperFlow also includes links to relevant resources, such as Web sites or local files that are copied to your computer when you install the SuperFlow.

March 23 2010

Windows Deployment Services (WDS) cache

We’ve had a constant frustration where clients would try to PXE boot more than once within an one hour period with the result being that the PXE boot fails. This problem occurs because of a PXE cache limitation (1 hour) set by default.

You can also confirm this configuration by looking in the smspxe.log file:

Loaded PXE settings from reg key HKLMSoftwareMicrosoftSMSPXE:
PXE Settings:
IsActive: Yes
SupportUnknownMachines: No
ResponseDelay: 0
CacheExpire: 3600
HTTP Port: 80
HTTPS Port: 443
IISSSLState: 0x0
BindPolicy: Exclude
Root CA Certs:
PXE GUID: fab8bfcc-3b15-431a-828d-fbfd184c3813

To fix this, reduce the cache size. Open regedit and navigate to HKEY_LOCAL_MACHINESoftwareMicrosoftSMSPXE (or for 64-bit OS, head to HKEY_LOCAL_MACHINESOFTWAREWow6432NodeMicrosoftSMSPXE). Modify the CacheExpire DWORD and set it to a lower value, in my case I set it to decimal value of 1, meaning that cache will only last for 1 second.

Restart the WDS service.

Further info here – http://support.microsoft.com/kb/2019640