Please enable Javascript for better experience...
Powershell Script - Get HBA/NIC Driver Information for Multiple ESXi Hosts
By Pranay Jha | Jun 6, 2017 | In Tips | Total Views [ 1192 ]
(1 Like)

PowerCLI Script to get HBA/NIC Driver Information for Multiple ESXi Hosts and Pull Report in CSV File.

Part - 1

  • Get Driver Modules for HBA and NIC Hardware. To get this, execute below command for one of ESXi Host. Make sure you are connected with vCenter before executing.

$esxName = 'HostName'

$esxcli = Get-EsxCli -VMHost $esxName

foreach($dev in $esxcli.hardware.pci.list()){

    if($dev.ModuleName -ne 'None'){

        $esxcli.system.module.get($dev.ModuleName) |

        Select @{N='Device';E={$dev.DeviceName}},@{N='DeviceClass';E={$dev.DeviceClassName}},Module,Version



  • You will get below output from above commands. Here we have HBA Hardware is running on "lpfc" and NIC on "elxnet" Module.
  • Now make a note of it. These hardware modules need to change in Part-2 script in place of "fnic" and "enic"

Part - 2

  • Replace "fnic" and "enic" in below script which you got from Part-1.

$report = Get-Datacenter | % {   


      foreach($esx in Get-VMhost -Location $datacenter){

        $esxcli = Get-EsxCli -VMHost $esx

        $nic = Get-VMHostNetworkAdapter -VMHost $esx | Select -First 1 | select -ExpandProperty Name

        $hba =Get-VMHostHBA -VMHost $esx -Type FibreChannel | where {$_.Status -eq "online"} |  Select -First 1 |select -ExpandProperty Name

        Get-VMHostHBA -VMHost $esx -Type FibreChannel | where {$_.Status -eq "online"} |

        Select @{N="Datacenter";E={$datacenter.Name}},


                @{N="HostName";E={$($_.VMHost | Get-VMHostNetwork).HostName}},




                @{Name="SerialNumber";Expression={$esx.ExtensionData.Hardware.SystemInfo.OtherIdentifyingInfo |Where-Object {$_.IdentifierType.Key -eq "Servicetag"} |Select-Object -ExpandProperty IdentifierValue}},


                    if($esx.ExtensionData.Parent.Type -ne "ClusterComputeResource"){"Stand alone host"}


                        Get-view -Id $esx.ExtensionData.Parent | Select -ExpandProperty Name



                @{N="WWPN";E={((("{0:X}"-f $_.NodeWorldWideName).ToLower()) -replace "(\w{2})",'$1:').TrimEnd(':')}},

                @{N="WWN";E={((("{0:X}"-f $_.PortWorldWideName).ToLower()) -replace "(\w{2})",'$1:').TrimEnd(':')}},

              # @{N="Fnicvendor";E={$ | ? {$_.Name -match ".*$($hba.hbadriver).*"} | Select -First 1 -Expand Vendor}},

                @{N="Fnicvendor";E={$esxcli.hardware.pci.list() | where {$hba -contains $_.VMKernelName} |Select -ExpandProperty VendorName }},



               # @{N="Enicvendor";E={$ | ? {$_.Name -match ".net.*"} | Select -First 1 -Expand Vendor}}

                 @{N="Enicvendor";E={$esxcli.hardware.pci.list() | where {$nic -contains $_.VMKernelName} |Select -ExpandProperty VendorName }}

                 #@{N="Enicvendor";E={$ | where {$ -eq $_.vmnic1} | select -First 1 -ExpandProperty Description }}



$report | Export-Csv report.csv -NoTypeInformation -UseCulture

Credit for this script is to Luc D.

Enjoy -:) . Let me know in case any suggestion or inputs.

Thanks for visiting here. Share this article if you found it useful.
Join Facebook Group
Like Facebook Page
Connect to twitter
Share this on Social Media

About the Author

Pranay Jha
Pranay Jha
Founder, Contributer
Follow me

facebook linkedin twitter G+ VMTN

My name is Pranay Jha, working in IBM as Technical Solution Architect for Virtualization platform. I have been working in IT for near around 11 years. Passionate to get involved as an Independent blogger for my blog I am carrying few industrial certifications as VMware vExpert 2016/2017, VCIX6, VCAP6-DCD, VCAP5-DCD/DCA, VCP6-DCVVCP5-DCV, VCA-Cloud, VCE-CIA, VSP, MCSE, MCITP, MCSA(Messaging). For any query or suggestion, please connect me at Thanks for visiting here.

Please SignUp/Login to comment...

Or comment as anonymous...
* Name
* Email ID
Facebook Likes