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.
Um zum Beispiel alle eingesetzten Firmware und Treiber Kombinationen zu reporten, ist folgender kurzer Befehl sehr hilfreich:
Get-NICDetails -Clustername * | select FirmwareVersion, DriverVersion -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
Hallo Markus,
deine Scripts sind wirklich sehr nützlich und praxisorientiert!
Mach weiter so!
Grüsse aus der Schweiz
Ronny
Hallo Ronny,
das freu mich wirklich sehr zu hören!
Ich werde mir mühe geben das weiter so zu halten…
Beste Grüße aus Hamburg,
Markus