Script – Get ESXi NIC Firmware and Driver Details

In jeder VMware Infrastruktur ist es enorm wichtig eine robuste Hardware Plattform als Basis zu schaffen. Dazu gehört unter anderem auch die korrekte ESXi NIC Firmware und die dazu passenden Treiber. Besonders relevant wird das, wenn man sehr spezielle Funktionen, wie zum Beispiel VXLAN Offloading einsetzen möchte. Eine wichtige Quelle für Informationen über unterstützte Kombinationen und Versionen ist hier wie immer die VMware HCL und bei HPE Hardware die HPE VMware Recipe.

Um mir in einer komplexen Umgebung einen schnellen Überblick über die verwendeten ESXi NIC Firmware und Treiber zu verschaffen habe ich mir eine kleine PowerCLI Funktion geschrieben. Die Funktion verwendet ESXCLI -V2 um die nötigen Informationen auf der esxcli abzuholen.

Script - Get ESXi NIC Firmware and Driver Details

Um zum Beispiel alle eingesetzten Firmware und Treiber Kombinationen zu reporten, ist folgender kurzer Befehl sehr hilfreich:

Get-NICDetails -Clustername * | select FirmwareVersion, DriverVersion -Unique

Get-NicDetails -Unique

Ja, ich gebe zu in einem Nested Lab ist das nicht sehr spannend… Aber dafür ist das Skript ja auch nicht gedacht.

PowerCLI ESXi NIC Firmware and Driver Details

function Get-NICDetails {
<#	
    .NOTES
    ===========================================================================
    Created by: Markus Kraus
    Twitter: @VMarkus_K
    Private Blog: mycloudrevolution.com
    ===========================================================================
    Changelog:  
    2017.02 ver 1.0 Base Release  
    ===========================================================================
    External Code Sources: 
    -
    ===========================================================================
    Tested Against Environment:
    vSphere Version: ESXi 6.0 U2, ESXi 6.5
    PowerCLI Version: PowerCLI 6.3 R1, PowerCLI 6.5 R1
    PowerShell Version: 4.0, 5.0
    OS Version: Windows 8.1, Server 2008 R2, Server 2012 R2
    Keyword: ESXi, NIC, vmnic, Driver, Firmware
    ===========================================================================

    .DESCRIPTION
    Reports Firmware and Driver Details for your ESXi vmnics.

    .Example
    Get-NICDetails -Clustername *

    .PARAMETER Clustername
    Name or Wildcard of your vSphere Cluster Name to process.


#Requires PS -Version 4.0
#Requires -Modules VMware.VimAutomation.Core, @{ModuleName="VMware.VimAutomation.Core";ModuleVersion="6.3.0.0"}
#>

[CmdletBinding()]
param( 
    [Parameter(Mandatory=$True, ValueFromPipeline=$False, Position=0)]
    [ValidateNotNullorEmpty()]
        [String] $Clustername
        
)

Begin {
    $Validate = $True

    if (($myCluster = Get-Cluster -Name $Clustername).count -lt 1) {
       $Validate = $False
       thow "No Cluster '$myCluster' found!"
    }
  
}

Process {

    $MyView = @()
    if ($Validate -eq $True) {
  
        foreach ($myVMhost in ($myCluster | Get-VMHost)) {

            $esxcli2 = Get-ESXCLI -VMHost $myVMhost -V2
            $niclist = $esxcli2.network.nic.list.invoke()

            $nicdetails = @()
            foreach ($nic in $niclist) {

                $args = $esxcli2.network.nic.get.createargs()
                $args.nicname = $nic.name
                $nicdetail = $esxcli2.network.nic.get.Invoke($args)
                $nicdetails += $nicdetail

                }
            ForEach ($nicdetail in $nicdetails){
		        $NICReport = [PSCustomObject] @{
				        Host = $myVMhost.Name
				        vmnic = $nicdetail.Name
				        LinkStatus = $nicdetail.LinkStatus
				        BusInfo = $nicdetail.driverinfo.BusInfo
				        Driver = $nicdetail.driverinfo.Driver
				        FirmwareVersion = $nicdetail.driverinfo.FirmwareVersion
				        DriverVersion = $nicdetail.driverinfo.Version
				        }
		        $MyView += $NICReport
		        }

		}
        
       $MyView

    }
}
}

Skript zur ESXi Basis Konfiguration auf GitHub

Das Skript bzw. die Funktion ist natürlich auch wieder in meinem vSphere Modules GitHub Projekt zu finden:

My VMware vSphere Modules

 

 

Welches nun auch eine Doku auf Read The Docs hat:

Read the Docs

2 Comments

  1. Ronny Steiner 20. Februar 2017
    • Markus Kraus 20. Februar 2017

Leave a Reply