# Exit if the endpoint is a server edition
Get-CimInstance -ClassName Win32_OperatingSystem | Select-Object -Property ProductType | ForEach-Object { If ( $_.ProductType -gt 1 ) { Return } }

# Exit if the endpoint is not running at least Windows 10
If ( IsWindowsVersion -lt "10.0" ) { Return }

# Exit if the endpoint is not running the Pro/Enterprise version of Windows
$Edition = ($(systeminfo | findstr /B /C:"OS Name") -replace "OS Name:","").Trim()
If ( ($Edition -notmatch "Pro") -and ($Edition -notmatch "Enterprise") ) { Return }

# Exit if Hyper-V is already enabled
If ( (Get-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V).State -eq "Enabled" ) { Return }

# Endpoint is running the correct version of Windows, enabling Hyper-V features
Write-Output "Enabling Hyper-V features"
Try { Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All -NoRestart }
Catch { Write-Error $_.Exception.Message }
