Script

-----------------------------------------------------------------------------------------------
Add-PSSnapin vmWARE.VimAutomation.Core
Connect-VIServer vcname

$report = Get-Datacenter | % {     
          $datacenter=$_ 
          foreach($esx in Get-VMhost -State Connected -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="VMHost";E={$esx.Name}}, 
                    @{N="HostName";E={$($_.VMHost | Get-VMHostNetwork).HostName}}, 
                    @{N="version";E={$esx.version}}, 
                    @{N="Manufacturer";E={$esx.Manufacturer}}, 
                    @{N="Hostmodel";E={$esx.Model}}, 
                    @{Name="SerialNumber";Expression={$esx.ExtensionData.Hardware.SystemInfo.OtherIdentifyingInfo |Where-Object {$_.IdentifierType.Key -eq "Servicetag"} |Select-Object -ExpandProperty IdentifierValue}}, 
                    @{N="Cluster";E={ 
                        if($esx.ExtensionData.Parent.Type -ne "ClusterComputeResource"){"Stand alone host"} 
                        else{ 
                            Get-view -Id $esx.ExtensionData.Parent | Select -ExpandProperty Name 
                        }}}, 
                    Device,Model,Status, 
                    @{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={$esxcli.software.vib.list() | ? {$_.Name -match ".*$($hba.hbadriver).*"} | Select -First 1 -Expand Vendor}}, 
                    @{N="Fnicvendor";E={$esxcli.hardware.pci.list() | where {$hba -contains $_.VMKernelName} |Select -ExpandProperty VendorName }}, 
                    @{N="fnicdriver";E={$esxcli.system.module.get("lpfc").version}} 
                   # @{N="enicdriver";E={$esxcli.system.module.get("enic").version}}, 
                   # @{N="Enicvendor";E={$esxcli.software.vib.list() | ? {$_.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={$esxcli.network.nic.list() | where {$vmnic.name -eq $_.vmnic1} | select -First 1 -ExpandProperty Description }} 
            } 
        }   
    $report | Export-Csv c:\ps\report\HBA_lpfc_Driver.csv -NoTypeInformation -UseCulture