Firmware version might be an issue, it can be retrieved but it depends on the HW vendor and type.
Give this one a try and see what is reported.
Note that it is for FC storage
foreach($hbainGet-VMHost|Get-VMHostHba-TypeFibreChannel){
$esxcli=Get-EsxCli-VMHost$hba.VMHost
$esxcli.storage.san.fc.list() |where{$_.Adapter -eq$hba.Device} |
Select @{N='VMHost';E={$hba.VMHost.Name}},
@{N='HBA';E={$hba.Name}},
ModelDescription,DriverName,DriverVersion,FirmwareVersion,HardwareVersion
}