A PowerShell script that inventories all hardware in a vSphere cluster and validates each device against the Broadcom Hardware Compatibility Guide (HCL) — outputting per-host CSVs, a cluster summary CSV, and a dark-mode HTML report with tabs per host and collapsible driver/firmware detail.
Original idea: Kabir Ali
Author: Paul van Dieen — hollebollevsan.nl
For every ESXi host in the target cluster the script collects:
| Category | Data collected |
|---|---|
| CPU | Model, vendor, socket count, core count |
| NIC | Vendor, model, PCI IDs (VID/DID/SVID/SDID), driver name, driver version, firmware version |
| HBA / Storage | Vendor, model, PCI IDs, driver name, driver version, firmware version |
| GPU | Vendor, model, PCI IDs, driver name (discrete GPUs only — iLO/BMC display chips are skipped) |
When -TargetESXiVersion is supplied, each unique device is looked up against the Broadcom Compatibility Guide API. Results show HCL status (Supported / Not Supported / Not Found) and the required driver + firmware combinations for the target release.
- VMware PowerCLI
Install-Module VMware.PowerCLI -Scope CurrentUser- PowerShell 5.1 or later (Windows PowerShell 5.1 and PowerShell 7.x are both supported)
- Network access to
compatibilityguide.broadcom.comfrom the machine running the script - vCenter credentials with at least read access to hosts and clusters
.\HCLCompatibilityReport.ps1 -vCenterServer vcenter.lab.local -ClusterName "Prod-Cluster-01".\HCLCompatibilityReport.ps1 `
-vCenterServer vcenter.lab.local `
-ClusterName "Prod-Cluster-01" `
-TargetESXiVersion "ESXi 9.0" `
-OutputPath "C:\HCL_Reports".\HCLCompatibilityReport.ps1 -vCenterServer vcenter.lab.local -TargetESXiVersion "ESXi 8.0 U3"| Parameter | Required | Default | Description |
|---|---|---|---|
-vCenterServer |
Yes | — | FQDN or IP of vCenter Server |
-ClusterName |
No | (all hosts) | vSphere cluster to inventory; omit to scan all hosts |
-TargetESXiVersion |
No | (skip HCL check) | Target ESXi release string, e.g. "ESXi 9.0" or "ESXi 8.0 U3" |
-OutputPath |
No | Current directory | Directory where output files are saved |
-Credential |
No | (prompted) | PSCredential for vCenter login |
All files are written to -OutputPath (defaults to the current directory) and include a timestamp in the filename.
| File | Description |
|---|---|
HCL_{hostname}_{timestamp}.csv |
Per-host hardware inventory |
HCL_ClusterSummary_{timestamp}.csv |
All hosts combined |
HCL_Check_{version}_{timestamp}.csv |
HCL results with required driver/fw per device |
HCL_Check_{version}_{timestamp}.html |
Dark-mode HTML report (see below) |
The HTML report is self-contained (no external dependencies) and includes:
- Summary cards — total devices checked, supported (green), not supported (red), not found (amber), errors
- Tab per host — each tab shows the hostname with a colour-coded count of supported / not-supported / not-found devices
- Device table — type badge, vendor, model, PCI IDs, installed driver + version, installed firmware, HCL status badge
- Collapsible driver/firmware detail — click "▶ N combination(s)" to expand the required driver name, version, firmware, and type for the target release
The script queries the same REST API used by the Broadcom Compatibility Guide portal.
- A session is initialised against
compatibilityguide.broadcom.comto obtain cookies required by the detail endpoint. - Devices are deduplicated by
VID + DID— the API is called once per unique combination across all hosts. - The search uses VID + DID only; SVID narrowing is done client-side to avoid excluding chip-vendor entries that carry the correct driver data.
- If the first matching HCL entry has no driver/firmware data for the installed driver, the script walks through all candidate UUIDs for that VID/DID until it finds a match.
- CPUs are looked up separately via keyword search (e.g. "Xeon Gold") and matched to the correct HCL series by model number prefix.
Note: The BCG API is unofficial and undocumented. It may change without notice.
- Embedded/management GPUs (iLO VGA, BMC display chips) are skipped. Only NVIDIA, AMD, and Intel discrete GPUs are checked against the HCL.
- HCL results reflect unique VID+DID combinations. Multiple identical cards in a cluster (e.g. 4 × ConnectX-4 Lx) share a single lookup result — the installed driver and firmware shown per row come from the inventory, but the HCL result is looked up once.
- The BCG API requires outbound HTTPS to
compatibilityguide.broadcom.com. If your jump host has no direct internet access, HCL checking will fail gracefully (inventory CSVs are still produced). - Certificate warnings are suppressed at the PowerCLI session level for lab/self-signed vCenter environments.
| Version | Changes |
|---|---|
| 1.4.0 | HTML report: tab per host, collapsible driver/fw combos. Fixed HBA PCI lookup to exact DeviceName match. Removed SVID from BCG API filters (client-side only). Detail API walks all candidate UUIDs. Fixed PowerShell 5 array unwrapping bug. Skip embedded GPU/display chips. |
| 1.3.0 | CPU HCL check via BCG cpu program. CPU series matched by model number prefix. CPU rows rendered separately in HTML. |
| 1.2.1 | PowerShell 5 compatibility fixes. Fixed viewDetails to POST with query-string params. BCG session cookie initialisation. Driver/fw combos filtered to installed driver. |
| 1.2.0 | Fixed BCG API endpoint. Resolved 0x prefix in PCI ID lookups. Added driver/firmware detail lookup. Added dark-mode HTML report. |
| 1.1.0 | Broadcom HCL check via BCG API. |
| 1.0.0 | Initial release — hardware inventory (CPU, NIC, HBA, GPU) from vCenter. |