preloader
2 December 2010 / #Powercli #Vsphere

Rapport de licences multi-vCenter

On a reçu une demande afin de récupérer des informations de licences VMware sur tous les vCenter de la plateforme.

Bien sûr, loin de nous l’idée d’aller tout se faire à la main, mais plutôt s’amuser à le faire en PowerCLI.

On a donc fait un petit script qui permet d’aller attaquer une liste de serveurs vCenter, récupérer les informations de licences VMware et mettre tout ce petit rapport dans un fichier .csv

Avant de se lancer, le script récupérera des credentials pour s’authentifier sur les vCenter.

Lics02

Ensuite, il se connectera sur chaque vCenter spécifié dans le script pour aller chercher les infos de licences.

Lics

Voilà le script en PowerCLI :

# Declaration des serveurs vCenter
$VIServers = @(
    "esx01", `
    "esx02", `
    "esx03" `
)

# Recuperation des credentials de connexion commune aux vCenter
Write-Host -Foreground yellow "Recuperation des informations de connexions vCenter :"
$cred = Get-Credential $Null
Write-Host ""

$ErrorActionPreference = "SilentlyContinue"
$WarningPreference = "SilentlyContinue"

# Parcours des differents vCenter
Foreach ($VISRV in $VIServers) {
    # Connexion au vCenter
    $VIServer = Connect-VIServer -Server $VISRV -Credential $cred

    # Verification de la connexion
    If ($VIServer.IsConnected){
        Write-Host "Connexion au vCenter $VISRV"

        # Fichier d'export
        $filename = "C:\Get-VILicense_" + $VISRV + ".csv"

        # On ne prend en compte que les vCenter 4.+
        If ( (Get-View ServiceInstance).Content.About.Version -ge "4" ) {
            $LicenseManager = Get-View (Get-View ServiceInstance).Content.LicenseManager
            $vSphereLicenseInfo = @()
            Foreach ($License in $LicenseManager.Licenses){
                $Details = "" | Select TypeLic, License, Total, Used, Information
                $Details.TypeLic = $License.Name
                $Details.License = $License.LicenseKey
                $Details.Total = $License.Total
                $Details.Used = $License.Used
                $Details.Information = $License.Labels | Select -expand Value
                $vSphereLicenseInfo += $Details
                $Aff = "Traitement de la licence #####-#####-#####-#####" + ($License.LicenseKey).substring(($License.LicenseKey).LastIndexOf('-')
                Write-Host -Foreground green $Aff
            }
            $vSphereLicenseInfo | Export-Csv -NoTypeInformation $filename
        } Else {
            Write-Host -Foreground red "Le vCenter $VISRV n'est pas en version 4.+"
        }

        # Deconnexion au vCenter
        Disconnect-VIServer -Server $VISRV -Confirm:$false | Out-Null
        Write-Host "Deconnexion du vCenter $VISRV"
    } else {
        Write-Host -Foreground red "Connexion au vCenter $VISRV impossible"
    }
    Write-Host ""
}

> Frederic MARTIN