This PowerCLI script retrieves detailed information about VMware Cluster High Availability (HA) and Admission Control policies. It is extremely useful for system administrators and auditors who need to verify that cluster settings comply with engineering or governance standards.
By running this script, you can easily generate a report that displays HA, DRS, and Admission Control configurations across all VMware clusters — helping ensure consistency, compliance, and operational readiness.
Download this Get-VMwareClusterHAInformation.ps1 script here or it is also available on github.com.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
Import-Module VMware.VimAutomation.Core Connect-VIServer -Server marvel.vcloud-lab.com -User administrator@vsphere.local -Password Computer@123 $clusterInfo = Get-Cluster #| Where-Object {$_.Name -eq 'SomeName'} $completeClusterInfo = @() foreach ($cluster in $clusterInfo) { $esxis = $cluster | Get-VMHost $totalESXis = $esxis.Count $connectedESxis = $esxis | Where-Object {$_.ConnectionState -eq 'Connected'} $poweredOnESXis = $esxis | Where-Object {$_.PowerState -eq 'PoweredOn'} $allClusterInfo = $cluster | Select-Object Name, @{Name='Total_Esxi_Count'; Expression={$totalESXis}}, HAEnabled, HAAdmissionControlEnabled, #HAFailoverLevel @{Name='Connected_Esxi_Count'; Expression={$connectedESxis.Count}}, @{Name='PoweredOn_Esxi_Count'; Expression={$poweredOnESXis.Count}}, @{Name='Host_Failures_Cluster_Tolerates'; Expression={$_.ExtensionData.Configuration.DasConfig.AdmissionControlPolicy.FailOverLevel}}, @{Name='Define_Host_Failover_Capacity_By'; Expression = { switch ($_.ExtensionData.Configuration.DasConfig.AdmissionControlPolicy.GetType().Name) { 'ClusterFailoverResourcesAdmissionControlPolicy' {'Cluster Resource Percentage (R)'; break} 'ClusterFailoverHostAdmissionControlPolicy' {'Dedicated Failover Host (H)'; break} 'ClusterFailoverLevelAdmissionControlPolicy' {'Soft Policy / Disabled (s)'; break} } #switch ($_.ExtensionData.Configuration.DasConfig.AdmissionControlPolicy.GetType().Name) } #Expression = { }, #@{Name='Define_Host_Failover_Capacity_By'; @{Name='Override_calculated_failover_capacity'; Expression={-not($_.ExtensionData.Configuration.DasConfig.AdmissionControlPolicy.AutoComputePercentages)}}, @{Name='Reserved_failover_CPU_capacity'; Expression={$_.ExtensionData.Configuration.DasConfig.AdmissionControlPolicy.CpuFailoverResourcesPercent}}, @{Name='Reserved_failover_Memory_capacity'; Expression={$_.ExtensionData.Configuration.DasConfig.AdmissionControlPolicy.MemoryFailoverResourcesPercent}}, @{Name='Reserve_Persistent_Memory_failover_capacity'; Expression={$_.ExtensionData.Configuration.DasConfig.AdmissionControlPolicy.PMemAdmissionControlEnabled}}, @{Name='Override_calculated_Persistent_Memory_failover_capacity'; Expression={-not($_.ExtensionData.Configuration.DasConfig.AdmissionControlPolicy.AutoComputePMemFailoverResourcesPercent)}}, @{Name='Reserve_Percentage_of_Persistent_Memory_capacity'; Expression={$_.ExtensionData.Configuration.DasConfig.AdmissionControlPolicy.PMemFailoverResourcesPercent}}, @{Name='Performance_degradation_VMs_tolerate'; Expression={$_.ExtensionData.Configuration.DasConfig.AdmissionControlPolicy.ResourceReductionToToleratePercent}}, @{Name='ESXi_Names'; Expression={$esxis.Name -Join ','}} $completeClusterInfo += $allClusterInfo } #foreach ($cluster in $clusterInfo) $completeClusterInfo |
Useful Article
VMWare Powercli: Time Configuration (NTP - Network Time Protocol) on multiple Esxi server
vSphere PowerCLI - Configure syslog on VMware ESXi hosts and Enable security profile firewall
Part 1: VMware Powercli : Gather distributed virtual switch information to JSON file to migrate standard switch
Part 2: Copy or clone distributed virtual switch portgroups to standard switch portgroups - Powercli
Part 3: VMware Powercli: Migrate VMs to another network
Powercli GUI: Determine the EVC Mode that vmware cluster should be configured
vMotion from all VMs on selected Esxi Host to other Esxi host via PowerCLI GUI
Powercli Get vCenter licenses information
Powercli Get vCenter assigned licenses report
PowerCLI one-liner Reporting, Chaning, Assigning and Removing licenses on ESXi
PowerCLI Get-VMhost The operation on computer failed The WinRM client cannot process the request
PowerCLI Add a SCSI Controller to a Virtual Machine
Powershell vCenter server Rest API create and assign tag and tagcategory
PowerCLI create, modify and assign tag and tagcategory
PowerCLI oneliner get the list of users and groups from vCenter SSO
PowerCLI Connect-VIServer Error: Invalid server certificate. Use Set-PowerCLIConfiguration to set the value for the InvalidCertificateAction

