In Windows 8, Microsoft has replaced its previous virtualization solution, Windows Virtual PC, with a more powerful, scalable, and capable solution called Hyper-V.Hyper-V client is present only in the Windows 8 Pro or Enterprise version.
To Install Hyper-V version 3 role in Windows 8 PC, Your system should meet a set of requirements which comprise of the System Type and some core processor requirements.
Hyper-V requires a 64-bit system with minimum of 4GB RAM and requires a CPU that has the
following features enabled.
following features enabled.
- Second Level Address Translation (SLAT)
- VirtualizationFirmwareEnabled
- VMMonitorModeExtensions
- DataExecutionPrevention
Windows admins like us can easily know whether Windows 8 that we have currently running is an 64 bit and also installed physical memory (RAM) meets the minimum requirement of 4GB via system properties
But for Checking Second Level Address Translation (SLAT) technology on CPU we would need to use a tool called as coreinfo.
SLAT feature is optional for Windows Server 2012, but necessary for installing Hyper-V on Windows 8 machines.
It is a feature which provides better performance by reducing the CPU time and improving the memory usage in virtual environments.
But now we have powershell to our rescue to check SLAT.
Below i have illustrated an example with a very simple function on how we can use CIM cmdlet to extract this information.
Function Test-HyperVRole { $osinfo = Get-CimInstance win32_operatingsystem $procinfo = Get-CimInstance Win32_Processor $info = [ordered]@{ 'OSArchitecture' = $osinfo.OSArchitecture 'TotalPhysicalMemory'=[math]::Round((Get-CimInstance win32_computersystem).TotalPhysicalMemory/1gb) 'SecondLevelAddressTranslationExtensions' = $procinfo.SecondLevelAddressTranslationExtensions; 'VirtualizationFirmwareEnabled' = $procinfo.SecondLevelAddressTranslationExtensions; 'VMMonitorModeExtensions' = $procinfo.SecondLevelAddressTranslationExtensions; 'DataExecutionPrevention'= (Get-CimInstance Win32_OperatingSystem).DataExecutionPrevention_available } $obj = New-Object -TypeName psobject -Property $info Write-Output $obj | fl * } Test-HyperVRole