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.
Ensuite, il se connectera sur chaque vCenter spécifié dans le script pour aller chercher les infos de licences.
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 ""
}