The connection between vCenter and the ESXHost is established and maintained by certificates.
You as an administrator would like to know when you certificates expire.
So I wrote a small function that can help get the certificate used from the hosts that are connected to your vcenter.
Function Get-ESXHostCertificateInfo { [cmdletbinding ()] param ( [Parameter(Mandatory=$true)] [VMware.Vim.HostSystem]$HostData) $Certificate = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2 $Certificate.Import($HostData.config.certificate) $Certificate.FriendlyName = $HostData.name [System.Security.Cryptography.X509Certificates.X509Certificate2]$Certificate }
The input for this function is a [VMware.Vim.HostSystem] object this is generated with the standard VMware command
Get-view -ViewType HostSystem -Server <vCenterServer>
When the Function is loaded you can use the following small script to get the data out of your vcenter or vcenters.
$vCenters = @('vCenter1','vCenter2') [pscredential]$Cred = Get-Credential Connect-VIServer -Server $vCenters -Credential $Cred $ESXhosts = Get-View -ViewType HostSystem -Property Name,Config.Certificate $data = $ESXhosts | ForEach-Object { Write-verbose "Processing $($_.name)" -verbose Get-ESXHostCertificateInfo $_ } | Select Friendlyname, ThumbPrint, NotAfter
In my Lab this is generating the following output
FriendlyName Thumbprint NotAfter ------------ ---------- -------- esxi65-03.usefullab.nl EE63C6F70B193813454881377F76D23AFCCCD14E 11/08/2023 12:11:42 esxi65-02.usefullab.nl E136C5D12CC38E2D6C97E6D044F46DA0EC03A332 11/08/2023 15:32:22 esxi65-04.usefullab.nl 04C3011BE2DD409190B3A483951E6E40B19FCFF6 24/08/2023 11:54:37 esxi65-01.usefullab.nl 75059A809EA27EF0F7C91C7F6CD297D886D952E0 09/08/2023 05:46:00
More Stories
Running PowerShell Hyper-V and VMWare Modules
Extend the Evaluation Period on Windows Server
Now using Ansible, Chocolatey, Powershell