Get-PSSnapin -registered | Add-PSSnapin -passthru -ErrorAction SilentlyContinue $Server = Connect-VIServer -Server vcenter.ntpro.local -User Administrator -Password "vmware" Foreach ($VMHost in Get-VMHost){ $esx = $VMHost | % {Get-View $_.Id} $Details = "" | Select "Host","Cluster", "CPU","Current EVCModeKey", "Max EVCModeKey" ,"VMX","MONITOR/MWAIT","SSE3","SSSE3","SSE4.1","SSE4.2","CMPXCHG8B","CMPXCHG16B","NX/XD","Long mode support","RDTSCP","3DNow!","3DNow! Extensions","FFXSR","Prefetch instructions" $Details.Host = $esx.name $Details."Cluster" = Get-Cluster -VMHost $VMHost $Details.CPU = $CpuFeature.Description $Details."Current EVCModeKey" = $esx.Summary.CurrentEVCModeKey $Details."Max EVCModeKey" = $esx.Summary.MaxEVCModeKey Foreach ($CpuFeature in ($esx.Hardware.CpuPkg)){ $Details.CPU = $CpuFeature.Description Foreach ($Level in ($CpuFeature.CpuFeature)){ $Eax_Bits = $Level.Eax.Replace(":", "") $Ebx_Bits = $Level.Ebx.Replace(":", "") $Ecx_Bits = $Level.Ecx.Replace(":", "") $Edx_Bits = $Level.Edx.Replace(":", "") $Eax = $Eax_Bits.ToCharArray() $Ebx = $Ebx_Bits.ToCharArray() $Ecx = $Ecx_Bits.ToCharArray() $Edx = $Edx_Bits.ToCharArray() If ($Level.Level -eq "1"){ $Details."VMX" = $Ecx[31-5] $Details."MONITOR/MWAIT" = $Ecx[31-3] $Details."SSE3" = $Ecx[31-0] $Details."SSSE3" = $Ecx[31-9] $Details."SSE4.1" = $Ecx[31-19] $Details."SSE4.2" = $Ecx[31-20] $Details."CMPXCHG8B" = $Edx[31-20] $Details."CMPXCHG16B" = $Ecx[31-13] } If ($Level.Level -eq "-2147483647"){ $Details."NX/XD" = $Edx[31-20] $Details."Long mode support" = $Edx[31-29] $Details."RDTSCP" = $Eax[31-27] $Details."3DNow!" = $Edx[31-31] $Details."3DNow! Extensions" = $Edx[31-30] $Details."FFXSR" = $Edx[31-25] $Details."Prefetch instructions" = $Ecx[31-8] } } $Details } }