VMware Cloud Community
lElOUCHE_79
Enthusiast
Enthusiast
Jump to solution

Get HBAs & NIC details along with cluster name

Hello

I have the below script to get HBAs & NiCs details, unfortunately, the cluster name is blank, and not sure why

 

$VMHosts = Get-VMHost
$Report = @()
foreach ($ESXHost in $VMHosts) {
    $esxcli = Get-EsxCli -VMHost $ESXHost -V2
    $nicfirmware = $esxcli.network.nic.list.Invoke()
    $fcfirmware = $esxcli.storage.san.fc.list.Invoke()
    $driversoft = $esxcli.software.vib.list.Invoke()

    foreach ($nicfirmwareselect in $nicfirmware) {
        $NetworDescription = $nicfirmwareselect.Description
        $NetworDriver = $driversoft | Where-Object { $_.name -eq ($nicfirmwareselect.Driver) }
        $NetworkName = $nicfirmwareselect.Name
        $NetworkFirmware = $esxcli.network.nic.get.Invoke(@{nicname=$nicfirmwareselect.Name}).DriverInfo.FirmwareVersion
        $ids = $esxcli.hardware.pci.list.Invoke() | Where-Object{$_.VMKernelName -eq $NetworkName}
        $Report += "" |
            Select-Object @{N = "Cluster"; E = {Get-Cluster $Clustername}},
            @{N = "Hostname"; E = { $ESXHost.Name } },
            @{N = "Hardware-Model"; E = { $ESXHost.Model } },
            @{N = "device"; E = { $NetworkName } },
            @{N = "driver"; E = { $NetworDriver.Version } },
            @{N = "firmware"; E = { $NetworkFirmware } },
            @{N = "description"; E = { $NetworDescription } },
            @{N='VendorID [VID]';E={"{0:x}" -f [int]$ids.VendorID}},
            @{N='DeviceID [DID]';E={"{0:x}" -f [int]$ids.DeviceID}},
            @{N='SubVendorID [SVID]';E={"{0:x}" -f [int]$ids.SubVendorID}},
            @{N='SubDeviceId [SDID]';E={"{0:x}" -f [int]$ids.SubDeviceID}}

    }
    foreach ($fcfirmwareselect in $fcfirmware) {
        $fcDescription = $fcfirmwareselect.ModelDescription
        $fcDriver = $driversoft | Where-Object { $_.name -eq ($fcfirmwareselect.DriverName) }
        $fcName = $fcfirmwareselect.Adapter
        $fcFirmware = $fcfirmwareselect.FirmwareVersion
        $ids = $esxcli.hardware.pci.list.Invoke() | Where-Object{$_.VMKernelName -eq $fcName}
        $Report += "" |
            Select-Object @{N = "Cluster"; E = {Get-Cluster $Clustername}},
            @{N = "Hostname"; E = { $ESXHost.Name } },
            @{N = "Hardware-Model"; E = { $ESXHost.Model } },
            @{N = "device"; E = { $fcName } },
            @{N = "driver"; E = { $fcDriver.Version } },
            @{N = "firmware"; E = { $fcFirmware } },
            @{N = "description"; E = { $fcDescription } },
            @{N='VendorID [VID]';E={"{0:x}" -f [int]$ids.VendorID}},
            @{N='DeviceID [DID]';E={"{0:x}" -f [int]$ids.DeviceID}},
            @{N='SubVendorID [SVID]';E={"{0:x}" -f [int]$ids.SubVendorID}},
            @{N='SubDeviceId [SDID]';E={"{0:x}" -f [int]$ids.SubDeviceID}}
    }
}
$Report | Export-Csv -Path '.\ESXi_HBAs_&_NICs-details.csv' -UseCulture -NoTypeInformation
Labels (4)
Tags (4)
0 Kudos
1 Solution

Accepted Solutions
LucD
Leadership
Leadership
Jump to solution

Since you don't have a variable  $Clustername, that will not work.
Change both lines to

            Select-Object @{N = "Cluster"; E = {(Get-Cluster -VMHost $ESXHost).Name}},


Blog: lucd.info  Twitter: @LucD22  Co-author PowerCLI Reference

View solution in original post

2 Replies
LucD
Leadership
Leadership
Jump to solution

Since you don't have a variable  $Clustername, that will not work.
Change both lines to

            Select-Object @{N = "Cluster"; E = {(Get-Cluster -VMHost $ESXHost).Name}},


Blog: lucd.info  Twitter: @LucD22  Co-author PowerCLI Reference

lElOUCHE_79
Enthusiast
Enthusiast
Jump to solution

Thank you very much 🙂 

0 Kudos