VMware Lizenzen auslesen und zugehörigen Host finden

Je größer die vSphere Umgebung ist, desto schwerer wird es, einen Überblick über die Lizenzen zu behalten.

Die Weboberfläche des Web Clients zeigt nur die vorhandenen Lizenzen an, nicht aber, wo sie verwendet werden. Dazu müsste man entweder jeden einzelnen ESX durchgehen oder beim Einpflegen der Lizenzen die jeweilige Beschreibung anpassen.

Einfacher ist da der Weg über die VMware PowerCLI.

Der Code

import-module VMware.VimAutomation.Cis.Core
Connect-VIServer -server vcenter.braun.local -Protocol https
$hosts = get-vmhost -name *
$vSphereLicenseInfo = @()
$ServiceInstance = Get-View ServiceInstance
$LicenseManager = Get-View ($ServiceInstance | Select -First 1).Content.LicenseManager
Foreach ($License in ($LicenseManager | Select -ExpandProperty Licenses)) {
	$Details = "" |Select Name, Key, Total, Used, Free, ExpirationDate , Information, Hosts
	$Details.Name= $License.Name
	$Details.Key= $License.LicenseKey
	$Details.Total= $License.Total
	$Details.Used= $License.Used
	$Details.Free = $Details.Total - $Details.Used
	$Details.Information= $License.Labels | Select -expand Value
	$Details.ExpirationDate = $License.Properties | Where { $_.key -eq "expirationDate" } | Select -ExpandProperty Value
	foreach($esx in $hosts){
		if($esx.LicenseKey -eq $License.LicenseKey){
			$Details.Hosts += $esx.Name + " "
		}
	}
	$vSphereLicenseInfo += $Details
}
$vSphereLicenseInfo | Format-Table -AutoSize

Das Ergebnis sieht dann wiefolgt aus:

Erklärungen

Zeile 1: Import der benötigten Module (falls man die Powershell händisch startet und nicht die PowerCLI an sich startet)

Zeile 2: Verbindung zum vCenter aufbauen

Zeile 3: Alle Hosts auslesen, um diese nachher iterativ gegen die Lizenzen laufen zu lassen

Zeile 4-15: Service Instanz Objekt anlegen, um an den Lizenzmanager zu kommen, dann via Schleife über die Lizenzen laufen und die notwendigen Infos auslesen und im Array ablegen.

Zeile 16-20: Zu jeder Lizenz wird anschließend ein Abgleich über alle Hosts gemacht,  um die Hosts zu finden, die die Lizenz verwenden.

 

Wer die Ergebnisse gerne in Excel importieren möchte, kann das bequem mit folgendem Befehl. Die CSV Datei muss dann wie gewohnt importiert werden.

$vSphereLicenseInfo | Export-Csv .licenses.csv
Advertisements