Something that I have been meaning to write up for some time now...
In nearly every environment I have worked in I have always come across some type of issue with Broadcom NICs.
In my most recent bout, it was determined that the network wasn't always (seemed to swap between having link negotation issues and invalid IP addresses) 100% initialised in WinPE before a task in the unattend.xml started executing. In our particular case we were working with Microsoft Deployment Toolkit which builds a custom WinPE image as part of deployment point synchronising.
Sample boot.bat
@echo off
echo.
echo INFO: Executing Sleep
echo.
cscript //nologo "%systemdrive%\sleep.vbs" 10
echo.
echo INFO: Renewing IP Address
ipconfig /renew
echo.
echo INFO: Executing Sleep
echo.
cscript //nologo "%systemdrive%\sleep.vbs" 10
echo.
Sample sleep.vbs
If Wscript.Arguments.Count = 0 Then
' Print Usage then quit
Wscript.Echo "Usage: cscript sleep.vbs
<Number>"
Wscript.Echo " <Number> - Number of seconds to sleep."
Wscript.Quit
Else
' Print how long we are sleeping for
Wscript.Echo "INFO: Sleeping for " & Wscript.Arguments.Item(0) & " seconds"
NumSeconds = Wscript.Arguments.Item(0) * 1000
'Sleep
Wscript.Sleep(NumSeconds)
End If
Unattend.xml Extract
<RunSynchronous>
<RunSynchronousCommand wcm:action="add">
<Description>CommandBreak WINPE Customisations</Description>
<Order>1</Order>
<Path>X:\boot.bat</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Description>Lite Touch PE</Description>
<Order>2</Order>
<Path>wscript.exe X:\Deploy\Scripts\LiteTouch.wsf</Path>
</RunSynchronousCommand>
</RunSynchronous>