L'objectif de ce script est de lister les détails des certificats SSL des ESXi
<#
.NOTES
==========================================================================================
Created by: William Lam
Organization: VMware
Blog: www.williamlam.com
Twitter: @lamw
Modified by : Antoine Jovelin
Modifications : Adding Functions : verifPowerLI / vcenter-connect / vcenter-disconnect
==========================================================================================
.DESCRIPTION
This function returns the certificate mode of vCenter Server along with
the certificate details of each ESXi hosts being managed by vCenter Server
.EXAMPLE
Get-VSphereCertificateDetails
#>
cls
# Declaration des fonctions
$herestring = @"
***** L'INSTALLATION A ECHOUEE *****
POUR INSTALLER POWERCLI :
1- RECUPERER LE MODULE DEPUIS CE LIEN : "https://developer.vmware.com/web/tool/vmware-powercli"
2- COPIER LE CONTENU DE L'ARCHIVE DANS "C:\Users\NOM_DU_USER\Documents\WindowsPowerShell\Modules"
3- RELANCER LE SCRIPT
"@
function verifPowerLI {
if($MyModules.name -match "VMware.PowerCLI"){
Write-Host "Le module PowerCLI est installé. Le script va continuer" -ForegroundColor Green
}else{
Write-Host "Le module PowerCLI n'est PAS installé. Le script ne pourra pas continuer" -ForegroundColor Yellow
do{
$reponse = Read-Host " Installer le module VMware.PowerCLI ? [oui/non] "
Switch ($reponse){
oui{
Install-Module -name vmware.powercli -Scope CurrentUser -Confirm:$false -Force
if($MyModules -notcontains "VMware.PowerCLI"){
Write-Host $herestring -ForegroundColor red
sleep 3
Write-Host " Fin du script dans quelques secondes" -ForegroundColor yellow
1..5 | Sort-Object -Descending | %{Start-Sleep -Seconds 1;Write-Host " $_ " -ForegroundColor yellow}
echo " "
exit
}
}
non{
Write-Host " Fin du script dans quelques secondes" -ForegroundColor yellow
1..5 | Sort-Object -Descending | %{Start-Sleep -Seconds 1;Write-Host " $_ " -ForegroundColor yellow}
echo " "
exit
}
}
}while(($reponse -ne "oui") -and ($reponse -ne "non"))
}
}
function vcenter-connect{
$VC = Read-Host -Prompt " Entrer le nom de vCenter "
$cred = Get-Credential
Write-Host;
Write-Host -ForegroundColor cyan "Connexion à vCenter. Merci de patienter..."
Connect-VIServer $VC -Credential $cred
Write-Host;
}
function vcenter-disconnect{
Write-Host;
Write-Host -ForegroundColor cyan "Déconnexion de vCenter..."
Disconnect-viserver -Server $Global:DefaultVIServer -Confirm:$false -Force
Write-Host;
}
Function Get-VSphereCertificateDetails {
if($global:DefaultVIServer.ProductLine -eq "vpx") {
$vCenterCertMode = (Get-AdvancedSetting -Entity $global:DefaultVIServer -Name vpxd.certmgmt.mode).Value
Write-Host -ForegroundColor Cyan "`nvCenter $(${global:DefaultVIServer}.Name) Certificate Mode: $vCenterCertMode"
}
$results = @()
$vmhosts = Get-View -ViewType HostSystem -Property Name,ConfigManager.CertificateManager
foreach ($vmhost in $vmhosts) {
$certConfig = (Get-View $vmhost.ConfigManager.CertificateManager).CertificateInfo
if($certConfig.Subject -match "vmca@vmware.com") {
$certType = "VMCA"
} else {
$certType = "Custom"
}
$tmp = [PSCustomObject] @{
VMHost = $vmhost.Name;
CertType = $certType;
Status = $certConfig.Status;
Expiry = $certConfig.NotAfter;
}
$results+=$tmp
}
$results
}
# Debut du script
vcenter-connect
Write-Host;
Write-Host " Vérification des modules nécessaires " -ForegroundColor Cyan
1..3 | Sort-Object -Descending | %{Start-Sleep -Seconds 1}
$MyModules = Get-Module -ListAvailable | select name
Write-Host;
verifPowerLI
Write-Host;
Write-Host -fore yellow " ---- Détails des certificats des ESXi ---- "
Write-Host;
Get-VSphereCertificateDetails
# Fin du script et deconnexion
Write-Host;
vcenter-disconnect