I got the script from http://vnugglets.com/2011/11/get-hp-firmware-info-for-hp-vmware.html and combined some updates in the comments in the script so that it also shows which NetXen firmware and NetXen drivers are on the system. I adapted the script to give the info for all machines in the cluster, not just a single cluster.
Foreach ($strHostsClusterName in Get-Cluster){
Get-View -ViewType HostSystem -Property Name, Runtime.HealthSystemRuntime.SystemHealthInfo.NumericSensorInfo -SearchRoot (Get-View -ViewType ClusterComputeResource -Property Name -Filter @{"Name" = "^$([RegEx]::escape($strHostsClusterName))$"}).MoRef | %{
$arrNumericSensorInfo = @($_.Runtime.HealthSystemRuntime.SystemHealthInfo.NumericSensorInfo)
# HostNumericSensorInfo for BIOS, iLO, array controller
$nsiBIOS = $arrNumericSensorInfo | ? {$_.Name -like "*System BIOS*"}
$nsiArrayCtrlr = $arrNumericSensorInfo | ? {$_.Name -like "HP Smart Array Controller*"}
$nsiILO = $arrNumericSensorInfo | ? {$_.Name -like "Hewlett-Packard BMC Firmware*"}
$nsiNXdev = $arrNumericSensorInfo | ? {$_.Name -like "nx_nic device*"}
$nsiNXdrv = $arrNumericSensorInfo | ? {$_.Name -like "nx_nic driver*"}
# assume all at same level and take first or set as n/a
if ( $nsiNXdev.Count -gt 0 ) {
$nsiNXdevice = $nsiNXdev[0].Name
} else {
$nsiNXdevice = "n/a"
}
if ( $nsiNXdrv.Count -gt 0 ) {
$nsiNXdriver = $nsiNXdrv[0].Name
} else {
$nsiNXdriver = "n/a"
}
New-Object PSObject -Property @{
VMHost = $_.Name
"SystemBIOS" = $nsiBIOS.name
"HPSmartArray" = $nsiArrayCtrlr.Name
"iLOFirmware" = $nsiILO.Name
"nx_nic device" = $nsiNXdevice
"nx_nic driver" = $nsiNXdriver
} ## end new-object
} ## end Foreach-Object
}
If I feel like it, I'll someday add LSI Logic cards and such as well. For now, it got me the info I needed, without logging on to 20 servers ;-)
Run the script from PowerCLI, by first connecting to the vCenter (Connect-Viserver <vcenter>) and then ./fwscript.ps1 | Export-CSV d:\fwlist.csv