L'objectif de ce script est de renouveler le certificat SSL d'un ESXi
<#
. AUTEUR : Antoine JOVELIN
. FONCTION : Renouveler le certificat SSL d'un ESXi
. UTILISATION :
- Lancer le script
#>
cls
# Declaration des fonctions
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 Renew-VMHostCertificate {
param(
[Parameter(Mandatory=$true,ValueFromPipeline=$true)]
[VMware.VimAutomation.ViCore.Impl.V1.Inventory.InventoryItemImpl]$VMHost,
[switch]$RunAsync
)
begin{
If(($global:DefaultVIServers).Count -gt 1){
Write-Error -Message "Currently you are connected to more than 1 vCenter, Please disconnect and connect to Respective vCenter" -ErrorAction Stop
}elseIf(($global:DefaultVIServers).Count -lt 1){
Write-Error -Message "You are not connected to vCenter to perform the task" -ErrorAction Stop
}
$ServiceInstance=Get-View ServiceInstance
$CertMgrID=$ServiceInstance.content.CertificateManager
$CertMgr=Get-View -Id $CertMgrID
}
Process{
try{
$validation=Get-VMHost $VMHost -ErrorAction Stop
}
catch{
Write-Error -Message "Entered esxi host does not exist in $global:DefaultVIServer"
}
If(($validation.ConnectionState -eq "Connected") -or ($validation.ConnectionState -eq "Maintenance")){
If($RunAsync -eq $true){
foreach($script:ESXi in $VMHost){$script:task=$CertMgr.CertMgrRefreshCertificates_Task($script:ESXi.extensiondata.moref)}
}else{
foreach($script:ESXi in $VMHost){$script:task=$CertMgr.CertMgrRefreshCertificates($script:ESXi.extensiondata.moref)}
}
}else{
Write-error -Message "Action cannot be performed on current state of ESXi" -ErrorAction Stop}
}
End{
Get-Task|?{$_.Name -match "Certificate"}|ft -AutoSize
}
}
# Debut du script
vcenter-connect
Write-Host;
Write-Host -fore cyan "
###########################################
## Renouveler le certificat SSL d'un ESXi #
###########################################"
Write-Host;
$esxi = Read-Host -Prompt " Enter le FQDN d'un ESXi "
Renew-VMHostCertificate -vmhost (Get-VMHost $esxi) -RunAsync:$true
Write-Host;
vcenter-disconnect