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.
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 GitHub.
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
Is there an error log? I entered my DB server and DB name in the settings and I get no result under PXE service point. Not sure what I missed
If it can’t connect to SQL or has an issue running the query it should return an error in a popup window. If there is no error, then try running the following SQL query using the same account and see if you get results:
‘Select ServerName from v_DistributionPoints where IsPxe = 1 Order By ServerName’
Had the same issue as Kenneth – to resolve the issue in my case anyway was just to enter in the sql server name only as opposed to the sql server name\instance. If its the default mssqlserver instance then the just server name is suffice
Same issue here.
DBSERVER\INS01 does not provide any list of PXE service points.
Running the query manually with the same user provides a list of all the PXE servers in SQLMgmtStudio, so permissions are good.
No errormessages pops up in the tool, and the PXE Service Point list never populates.
Also tried:
FQDN-of-sql\INS01
Run As Admin
Any clue?
Is it the default instance? Did you try without the instance name?
No, not default instance. The instance is named, called INS01. I also tried without any \INS01, with no luck, specially since I have no default instances.
The tool uses my [SQLQuery] custom class for PowerShell 5. Could you try running the query using that class and tell me what happens?
https://smsagent.wordpress.com/posh-5-custom-classes/sql-query/
I believe I created the class and ran the query as instructed, which gave me absolutely no output. Here is a picture: https://www.dropbox.com/s/9vvxawvocnhzq4q/SQLQuery.PNG?dl=0
Could it be that this is being run from a server running WinSrv 2016 with PS5, while the SQL server is running WinSrv 2012R2 still on PS4 ?
I removed the picture, I had missed a line in the script. Here is the output:
Exception calling “Open” with “0” argument(s): “A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 26 –
Error Locating Server/Instance Specified)”
Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index
At line:260 char:1
+ $SQLQuery.Execute()
+ ~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : OperationStopped: (:) [], ArgumentOutOfRangeException
+ FullyQualifiedErrorId : System.ArgumentOutOfRangeException
Ok, so it seems you cannot communicate with the SQL server from that system. Check that the TCP/IP protocol is enabled in the SQL Server Configuration Manager for the instance, and that the port/s being used are open.
The SQL server TCP port is running on port 1434 (not default 1433).
Servername:1434\INS01 did not work, are custom TCP ports supported?
You can try adding the port like this: servername\instance,1434
Hallo, i have tehe same problem, pxe service point is empty, the check sql query get successful result.
Are you using custom ports on SQL instance?
Hi, I am not able to get it to work. I use default instance, default port and I have tested with this: https://smsagent.wordpress.com/posh-5-custom-classes/sql-query/ and is able to connect with the commands. This SQL query also work: Select ServerName from v_DistributionPoints where IsPxe = 1 Order By ServerName
Hope you have an idear.. 😀
Hmm the app should give an error pop up if it cannot connect to the SQL server. Have you tried the tool on a different system. Do you have .Net framework 4.5 installed? Which OS and PS version are you running?
Seeing the same issue as other mentioned above. From 2 different systems I do not get a PXE point. Tested the SQL Query class from both systems and they both pull data, as well as pull the PXE server name with the following
$SQLQuery = [SQLQuery]::new(“SERVERNAME”,”DATABASE”,”Select ServerName from v_DistributionPoints where IsPxe = 1 Order By ServerName”)
$SQLQuery.Execute()
But the program does not seem to pull this DP for me to be able to get data, nor does it pop up any error.
Thanks
Are you using version 1.1 of the tool? What are your OS / architecture / .Net Framework version?
Yes Version 1.1
.Net 4.7
Windows 10 x64 EDU
Thanks
If you try to connect the tool to a SQL instance / database that doesn’t exist, does it pop up an error?
Yes, using a default instance, so if I try to add anything else after just server name it complains. And also if I put a wrong server in, I get a popup error “Could not run SQL query!” Exception calling “Open” with 0 Arguments, A network related error occurred while establishing a connection to sql server.
Ok that’s good. How many PXE-enabled DPs do you have? I discovered a bug where if you only have 1 PXE-enabled DP it will not display it in the drop-down combo.
That bug is probably our issue, we have 1 PXE Enabled DP.
Thanks
Can you try this new version (1.2) and see if it works for you? https://1drv.ms/u/s!As7W7ynYQNx2piM7XK9cOsavo82i
Hello
Yes that version works, it brings up our Single PXE Enabled DP and the logs load.
Thanks for the assistance.
Great, thanks for reporting it.
Any chance of getting a column for IP Address?
The link is not working , unable to download the tool
Pls try again.
Where do you install the tool? On one of tthe Sccm Site Servers? Or on the DP? Or where?
Anywhere that can access the ConfigMgr database
Hi Trevor, is this still available on the technet gallery? unable to locate it there.
This looks like exactly what I’m after for diagnosing a PXE issue with some of our MECM DP’s
Thanks
It’s here: https://github.com/SMSAgentSoftware/ConfigMgr-PXE-Boot-Log
After poking with this for a few minutes, thought I’d leave my findings here. Since MSI installer no longer available on Technet, you have to download the source from github.
1. Download the entire source as ZIP from github
2. Extract to C:\Program Files (x86)\SMSAgent\ConfigMgr PXE Boot Log, such that ConfigMgrPXEBootlog.ps1 is in the folder and bin,Versions, and XAML Files folder are under it.
3. Run ConfigMgrPXEBootlog.ps1 via Powershell
4. Configure Database server and name
5. Look for Trevor’s other extremely helpful too, ConfigMgr Task Sequence Monitor and install it 🙂
Appreciate the comment – I’ve updated the download link to the msi on GitHub – can’t believe I’ve never done that!!