Search code examples
powershellwindows-10versionwindows-11

PowerShell, determine if we are running on Windows 10 or Windows 11


If I run the following version test on Windows 10 or Windows 11, they both report $Major as 10 and $Minor as 0, so this test is not sufficient to determine if we are running on Windows 10 or Windows 11.

[version]$OSVersion = [Environment]::OSVersion.Version
$Major = $OSVersion.Major
$Minor = $OSVersion.Minor

# Other ways to test:

# $OSVersion = [Version](Get-ItemProperty -Path "$($Env:Windir)\System32\hal.dll" -ErrorAction SilentlyContinue).VersionInfo.FileVersion.Split()[0]

# [version]$OSVersion = Get-CimInstance -Class Win32_OperatingSystem | Select-Object -ExpandProperty Version

In PowerShell, how can we distinguish if we are running in Windows 10 or Windows 11 ?


Solution

  • Using WMI data directly requires less overhead

    $isWin11 = (Get-WmiObject Win32_OperatingSystem).Caption -Match "Windows 11"
    

    Alternative with CIM:

    $isWin11 = (Get-CimInstance -Class Win32_OperatingSystem).Caption -Match "Windows 11"