Try like this
Get-Datacenter | % {
$datacenter=$_
foreach($esx in Get-VMhost -Location $datacenter){
$esxcli = Get-EsxCli -VMHost $esx
$hba = Get-VMHostHBA -VMHost $esx -Type FibreChannel | where {$_.Status -eq "online"} | Select -First 1
$nic = Get-VMHostNetworkAdapter -VMHost $esx | Select -First 1
$esx | Select @{N="Datacenter";E={$datacenter}},
@{N="VMHost";E={$esx.Name}},
@{N="HostName";E={$($hba.VMHost | Get-VMHostNetwork).HostName}},
@{N="ver";E={$esx.version}},
@{N="Manf";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
}}},
@{N="HBA Device";E={$hba.Device}},
@{N="HBA Model";E={$hba.Model}},
@{N="HBA Status";E={$hba.Status}},
@{N="WWN";E={((("{0:X}"-f $hba.PortWorldWideName).ToLower()) -replace "(\w{2})",'$1:').TrimEnd(':')}},
@{N="fnicdriver";E={$esxcli.software.vib.list() | ? {$_.Name -match ".*$($hba.hbadriver).*"} | Select -First 1 -Expand Version}},
@{N="Fnicvendor";E={$esxcli.software.vib.list() | ? {$_.Name -match ".*$($hba.hbadriver).*"} | Select -First 1 -Expand Vendor}},
@{N="enicdriver";E={$esxcli.system.module.get("enic").version}},
@{N="Enicvendor";E={$esxcli.software.vib.list() | ? {$_.Name -match ".net.*"} | Select -First 1 -Expand Vendor}}
}
}
Blog: lucd.info Twitter: @LucD22 Co-author PowerCLI Reference