OS Version Queries for WMI Filters

NOTE: Updated Feb 13, 2020 to include Windows Server 2019

More likely than not, if you’re using Group Policy to push out software installation or registry entries to client machines or servers on the domain, the particular policy settings may be different depending on the OS version or architecture.

Examples, Group Policy Objects may need to be filtered by:

  • Desktop OS / Server OS
  • Domain Controller / Non-Domain Controller
  • 32-bit / 64-bit

If you haven’t used Windows Management Instrumentation (WMI) filters before, they show up in Group Policy Management at the bottom, between Group Policy Objects and Starter GPOs.

Common OS WMI Filters

The WMI filters use a query to scope down the Group Policy Object applicability. Here’s what a typical WMI OS filter looks like:

WMI filter

select * from Win32_OperatingSystem WHERE Version like

WMI Win32_OperatingSystem ProductType Tips:

  • ProductType 1 = Desktop OS
  • ProductType 2 = Server OS – Domain Controller
  • ProductType 3 = Server OS – Not a Domain Controller

WMI Win32_OperatingSystem Version Number Tips:

  • 5.1 – Windows XP
  • 5.2 – Windows Server 2003
  • 5.2.3 – Windows Server 2003 R2
  • 6.0 – Windows Vista & Windows Server 2008
  • 6.1 – Windows 7 & Windows Server 2008 R2
  • 6.2 – Windows 8 & Windows Server 2012
  • 6.3 – Windows 8.1 & Windows Server 2012 R2
  • 10.0 – Windows 10 & Windows Server 2016 & 2019

To create your own WMI filters, here is an updated list of WMI filter queries from Window XP – Windows 10 and from Server 2003 to Server 2019.

IMPORTANT DISCLAIMER:
Always test your Group Policies and WMI filters before deploying.

DESKTOP WMI QUERIES

ANY WINDOWS DESKTOP OS

  • Any Windows Desktop OS – Version 1
    SELECT * FROM Win32_OperatingSystem WHERE ProductType = “1”
  • Any Windows Desktop OS – Version 2 (better for Win7 sometimes)
    SELECT * FROM Win32_OperatingSystem WHERE (ProductType <> “2”) AND (ProductType <> “3”)
  • Any Windows Desktop OS – 32-bit
    SELECT * FROM Win32_OperatingSystem WHERE ProductType = “1” AND NOT OSArchitecture = “64-bit”
  • Any Windows Desktop OS – 64-bit
    SELECT * FROM Win32_OperatingSystem WHERE ProductType = “1” AND OSArchitecture = “64-bit”

WINDOWS XP

  • Windows XP
    SELECT * FROM Win32_OperatingSystem WHERE (Version LIKE “5.1%” or Version like “5.2%”) AND ProductType=”1″
  • Windows XP – 32-bit
    SELECT * FROM Win32_OperatingSystem WHERE (Version LIKE “5.1%” or Version like “5.2%”) AND ProductType=”1″ AND NOT OSArchitecture = “64-bit”
  • Windows XP – 64-bit
    SELECT * FROM Win32_OperatingSystem WHERE (Version LIKE “5.1%” or Version like “5.2%”) AND ProductType=”1″ AND OSArchitecture = “64-bit”

WINDOWS VISTA

  • Windows Vista
    SELECT * FROM Win32_OperatingSystem WHERE Version LIKE “6.0%” AND ProductType=”1″
  • Windows Vista – 32-bit
    SELECT * FROM Win32_OperatingSystem WHERE Version LIKE “6.0%” AND ProductType=”1″ AND NOT OSArchitecture = “64-bit”
  • Windows Vista – 64-bit
    SELECT * FROM Win32_OperatingSystem WHERE Version LIKE “6.0%” AND ProductType=”1″ AND OSArchitecture = “64-bit”

WINDOWS 7

  • Windows 7
    SELECT * FROM Win32_OperatingSystem WHERE Version LIKE “6.1%” AND ProductType=”1″
  • Windows 7 – 32-bit
    SELECT * FROM Win32_OperatingSystem WHERE Version LIKE “6.1%” AND ProductType=”1″ AND NOT OSArchitecture = “64-bit”
  • Windows 7 – 64-bit
    SELECT * FROM Win32_OperatingSystem WHERE Version LIKE “6.1%” AND ProductType=”1″ AND OSArchitecture = “64-bit”

WINDOWS 8

  • Windows 8
    SELECT * FROM Win32_OperatingSystem WHERE Version LIKE “6.2%” AND ProductType=”1″
  • Windows 8 – 32-bit
    SELECT * FROM Win32_OperatingSystem WHERE Version LIKE “6.2%” AND ProductType=”1″ AND NOT OSArchitecture = “64-bit”
  • Windows 8 – 64-bit
    SELECT * FROM Win32_OperatingSystem WHERE Version LIKE “6.2%” AND ProductType=”1″ AND OSArchitecture = “64-bit”

WINDOWS 8.1

  • Windows 8.1
    SELECT * FROM Win32_OperatingSystem WHERE Version LIKE “6.3%” AND ProductType=”1″
  • Windows 8.1 – 32-bit
    SELECT * FROM Win32_OperatingSystem WHERE Version LIKE “6.3%” AND ProductType=”1″ AND NOT OSArchitecture = “64-bit”
  • Windows 8.1 – 64-bit
    SELECT * FROM Win32_OperatingSystem WHERE Version LIKE “6.3%” AND ProductType=”1″ AND OSArchitecture = “64-bit”

WINDOWS 10

  • Windows 10
    SELECT * FROM Win32_OperatingSystem WHERE Version LIKE “10.0%” AND ProductType=”1″
  • Windows 10 – 32-bit
    SELECT * FROM Win32_OperatingSystem WHERE Version LIKE “10.0%” AND ProductType=”1″ AND NOT OSArchitecture = “64-bit”
  • Windows 10 – 64-bit
    SELECT * FROM Win32_OperatingSystem WHERE Version LIKE “10.0%” AND ProductType=”1″ AND OSArchitecture = “64-bit”

SERVER WMI QUERIES

ANY WINDOWS SERVER OS

  • Any Windows Server OS
    SELECT * FROM Win32_OperatingSystem WHERE (ProductType = “2”) OR (ProductType = “3”)
  • Any Windows Server OS – 32-bit
    SELECT * FROM Win32_OperatingSystem WHERE (ProductType = “2”) OR (ProductType = “3”) AND NOT OSArchitecture = “64-bit”
  • Any Windows Server OS – 64-bit
    SELECT * FROM Win32_OperatingSystem WHERE (ProductType = “2”) OR (ProductType = “3”) AND OSArchitecture = “64-bit”
  • Any Windows Server – Domain Controller
    SELECT * FROM Win32_OperatingSystem WHERE (ProductType = “2”)
  • Any Windows Server – Domain Controller – 32-bit
    SELECT * FROM Win32_OperatingSystem WHERE (ProductType = “2”) AND NOT OSArchitecture = “64-bit”
  • Any Windows Server – Domain Controller – 64-bit
    SELECT * FROM Win32_OperatingSystem WHERE (ProductType = “2”) AND OSArchitecture = “64-bit”
  • Any Windows Server – Non-Domain Controller
    SELECT * FROM Win32_OperatingSystem WHERE (ProductType = “3”)
  • Any Windows Server – Non- Domain Controller – 32-bit
    SELECT * FROM Win32_OperatingSystem WHERE (ProductType = “3”) AND NOT OSArchitecture = “64-bit”
  • Any Windows Server – Non-Domain Controller – 64-bit
    SELECT * FROM Win32_OperatingSystem WHERE (ProductType = “3”) AND OSArchitecture = “64-bit”

WINDOWS SERVER 2003

  • Windows Server 2003     
    SELECT * FROM Win32_OperatingSystem WHERE Version LIKE “5.2%” AND ProductType<>”1″
  • Windows Server 2003 – DC
    SELECT * FROM Win32_OperatingSystem WHERE Version LIKE “5.2%” AND ProductType=”2″
  • Windows Server 2003 – non-DC
    SELECT * FROM Win32_OperatingSystem WHERE Version LIKE “5.2%” AND ProductType=”3″
  • Windows Server 2003 – 32-bit – DC
    SELECT * FROM Win32_OperatingSystem WHERE Version LIKE “5.2%” AND ProductType=”2″ AND NOT OSArchitecture = “64-bit”
  • Windows Server 2003 – 32-bit – non-DC
    SELECT * FROM Win32_OperatingSystem WHERE Version LIKE “5.2%” AND ProductType=”3″ AND NOT OSArchitecture = “64-bit”
  • Windows Server 2003 – 64-bit – DC
    SELECT * FROM Win32_OperatingSystem WHERE Version LIKE “5.2%” AND ProductType=”2″ AND OSArchitecture = “64-bit”
  • Windows Server 2003 – 64-bit – non-DC
    SELECT * FROM Win32_OperatingSystem WHERE Version LIKE “5.2%” AND ProductType=”3″ AND OSArchitecture = “64-bit”

WINDOWS SERVER 2003 R2

  • Windows Server 2003 R2     
    SELECT * FROM Win32_OperatingSystem WHERE Version LIKE “5.2.3%” AND ProductType<>”1″
  • Windows Server 2003 R2 – DC
    SELECT * FROM Win32_OperatingSystem WHERE Version LIKE “5.2.3%” AND ProductType=”2″
  • Windows Server 2003 R2 – non-DC
    SELECT * FROM Win32_OperatingSystem WHERE Version LIKE “5.2.3%” AND ProductType=”3″
  • Windows Server 2003 R2 – 32-bit – DC
    SELECT * FROM Win32_OperatingSystem WHERE Version LIKE “5.2.3%” AND ProductType=”2″ AND NOT OSArchitecture = “64-bit”
  • Windows Server 2003 R2 – 32-bit – non-DC
    SELECT * FROM Win32_OperatingSystem WHERE Version LIKE “5.2.3%” AND ProductType=”3″ AND NOT OSArchitecture = “64-bit”
  • Windows Server 2003 R2 – 64-bit – DC
    SELECT * FROM Win32_OperatingSystem WHERE Version LIKE “5.2.3%” AND ProductType=”2″ AND OSArchitecture = “64-bit”
  • Windows Server 2003 R2 – 64-bit – non-DC
    SELECT * FROM Win32_OperatingSystem WHERE Version LIKE “5.2.3%” AND ProductType=”3″ AND OSArchitecture = “64-bit”

WINDOWS SERVER 2008

  • Windows Server 2008     
    SELECT * FROM Win32_OperatingSystem WHERE Version LIKE “6.0%” AND ProductType<>”1″
  • Windows Server 2008DC
    SELECT * FROM Win32_OperatingSystem WHERE Version LIKE “6.0%” AND ProductType=”2″
  • Windows Server 2008 – non-DC
    SELECT * FROM Win32_OperatingSystem WHERE Version LIKE “6.0%” AND ProductType=”3″
  • Windows Server 2008 – 32-bit – DC
    SELECT * FROM Win32_OperatingSystem WHERE Version LIKE “6.0%” AND ProductType=”2″ AND NOT OSArchitecture = “64-bit”
  • Windows Server 2008 – 32-bit – non-DC
    SELECT * FROM Win32_OperatingSystem WHERE Version LIKE “6.0%” AND ProductType=”3″ AND NOT OSArchitecture = “64-bit”
  • Windows Server 2008 – 64-bit – DC
    SELECT * FROM Win32_OperatingSystem WHERE Version LIKE “6.0%” AND ProductType=”2″ AND OSArchitecture = “64-bit”
  • Windows Server 2008 – 64-bit – non-DC
    SELECT * FROM Win32_OperatingSystem WHERE Version LIKE “6.0%” AND ProductType=”3″ AND OSArchitecture = “64-bit”

WINDOWS SERVER 2008 R2

  • Windows Server 2008 R2     
    SELECT * FROM Win32_OperatingSystem WHERE Version LIKE “6.1%” AND ProductType<>”1″
  • Windows Server 2008 R2 – DC
    SELECT * FROM Win32_OperatingSystem WHERE Version LIKE “6.1%” AND ProductType=”2″
  • Windows Server 2008 R2 – non-DC
    SELECT * FROM Win32_OperatingSystem WHERE Version LIKE “6.1%” AND ProductType=”3″

WINDOWS SERVER 2012

  • Windows Server 2012     
    SELECT * FROM Win32_OperatingSystem WHERE Version LIKE “6.2%” AND ProductType<>”1″
  • Windows Server 2012 – DC
    SELECT * FROM Win32_OperatingSystem WHERE Version LIKE “6.2%” AND ProductType=”2″
  • Windows Server 2012 – non-DC
    SELECT * FROM Win32_OperatingSystem WHERE Version LIKE “6.2%” AND ProductType=”3″

WINDOWS SERVER 2012 R2

  • Windows Server 2012R2     
    SELECT * FROM Win32_OperatingSystem WHERE Version LIKE “6.3%” AND ProductType<>”1″
  • Windows Server 2012 R2 – DC
    SELECT * FROM Win32_OperatingSystem WHERE Version LIKE “6.3%” AND ProductType=”2″
  • Windows Server 2012 R2 – non-DC
    SELECT * FROM Win32_OperatingSystem WHERE Version LIKE “6.3%” AND ProductType=”3″

WINDOWS SERVER 2016 *

  • Windows Server 2016     
    SELECT * FROM Win32_OperatingSystem WHERE (Version LIKE “10.0.14393%”) OR (Version LIKE “10.0.16299%”) OR (Version LIKE “10.0.17134%”) AND ProductType<>”1″
  • Windows Server 2016 – DC
    SELECT * FROM Win32_OperatingSystem WHERE (Version LIKE “10.0.14393%”) OR (Version LIKE “10.0.16299%”) OR (Version LIKE “10.0.17134%”) AND ProductType=”2″
  • Windows Server 2016 – non-DC
    SELECT * FROM Win32_OperatingSystem WHERE (Version LIKE “10.0.14393%”) OR (Version LIKE “10.0.16299%”) OR (Version LIKE “10.0.17134%”) AND ProductType=”3″

WINDOWS SERVER 2019 *

  • Windows Server 2019     
    SELECT * FROM Win32_OperatingSystem WHERE (Version LIKE “10.0.17763%”) OR (Version LIKE “10.0.18362%”) OR (Version LIKE “10.0.18363%”) AND ProductType<>”1″
  • Windows Server 2019 – DC
    SELECT * FROM Win32_OperatingSystem WHERE (Version LIKE “10.0.17763%”) OR (Version LIKE “10.0.18362%”) OR (Version LIKE “10.0.18363%”) AND ProductType=”2″
  • Windows Server 2019 – non-DC
    SELECT * FROM Win32_OperatingSystem WHERE (Version LIKE “10.0.17763%”) OR (Version LIKE “10.0.18362%”) OR (Version LIKE “10.0.18363%”) AND ProductType=”3″

* A few notes about the “OR” operator:

First – The reason for the “OR” statements in Server 2016 and Server 2019 WMI Query Filters is because there are multiple builds, as shown in the table below. These multiple builds are part of Microsoft’s Windows as a service (Waas) plan.

Second – “Or” combines two conditions. When more than one logical operator is used in a statement, the OR operators are evaluated after the AND operators. (Source)

Major Minor Version Build Info Released
10 0 1607 14393 2016 RTM LTSC 09/26/2016
10 0 1709 16299 2016 SAC 10/17/2017
10 0 1803 17134 2016 SAC 04/30/2018
10 0 1809 17763 2019 LTSC 11/13/2018
10 0 1903 18362 2019 SAC 5/21/2019
10 0 1909 18363 2019 SAC 11/12/2019

Helpful OS Term Abbreviations



    VN:F [1.9.20_1166]
    Rating: 9.9/10 (45 votes cast)
    OS Version Queries for WMI Filters, 9.9 out of 10 based on 45 ratings

    9 Replies to “OS Version Queries for WMI Filters”

      1. Bastiaan, thanks for the tip!

        WBEMTEST.EXE is great!
        For example, when viewing the Win32_Operatingsystem(CIM_Operating) class, if you look at the Win32_OperatingSystem=@ class and show the MOF, you get a ton of great information:

        instance of Win32_OperatingSystem
        {
        BootDevice = "DeviceHarddiskVolume2";
        BuildNumber = "17763";
        BuildType = "Multiprocessor Free";
        Caption = "Microsoft Windows 10 Enterprise";
        CodeSet = "1252";
        CountryCode = "1";
        CreationClassName = "Win32_OperatingSystem";
        CSCreationClassName = "Win32_ComputerSystem";
        CSName = "WIN10VM";
        CurrentTimeZone = -300;
        DataExecutionPrevention_32BitApplications = TRUE;
        DataExecutionPrevention_Available = TRUE;
        DataExecutionPrevention_Drivers = TRUE;
        DataExecutionPrevention_SupportPolicy = 2;
        Debug = FALSE;
        Description = "";
        Distributed = FALSE;
        EncryptionLevel = 256;
        ForegroundApplicationBoost = 2;
        FreePhysicalMemory = "1298292";
        FreeSpaceInPagingFiles = "9639388";
        FreeVirtualMemory = "4448960";
        InstallDate = "20190806144618.000000-300";
        LastBootUpTime = "20200203151512.519093-300";
        LocalDateTime = "20200213153508.759000-300";
        Locale = "0409";
        Manufacturer = "Microsoft Corporation";
        MaxNumberOfProcesses = 4294967295;
        MaxProcessMemorySize = "137438953344";
        MUILanguages = {"en-US"};
        Name = "Microsoft Windows 10 Enterprise|C:WINDOWS|DeviceHarddisk0Partition4";
        NumberOfProcesses = 324;
        NumberOfUsers = 9;
        OperatingSystemSKU = 4;
        Organization = "Virtual Machine";
        OSArchitecture = "64-bit";
        OSLanguage = 1033;
        OSProductSuite = 256;
        OSType = 18;
        PortableOperatingSystem = FALSE;
        Primary = TRUE;
        ProductType = 1;
        RegisteredUser = "Joe User";
        SerialNumber = "00329-10331-12345-AABB2";
        ServicePackMajorVersion = 0;
        ServicePackMinorVersion = 0;
        SizeStoredInPagingFiles = "10912052";
        Status = "OK";
        SuiteMask = 272;
        SystemDevice = "DeviceHarddiskVolume4";
        SystemDirectory = "C:WINDOWSsystem32";
        SystemDrive = "C:";
        TotalVirtualMemorySize = "19130716";
        TotalVisibleMemorySize = "8218664";
        Version = "10.0.17763";
        WindowsDirectory = "C:WINDOWS";
        };

        For an introduction into WBEMTEST.EXE, check out this link: https://docs.microsoft.com/en-us/configmgr/develo

        -Tim

    1. Hi,
      Much simpler in my opinion to filter Win2016 out of Win2019:
      Win2019:
      select version from win32_operatingsystem where version like '10%' AND version >= '10.0.17763'
      Win2016:
      select version from win32_operatingsystem where version like '10%' AND version < '10.0.17763'

    2. I had issues copy pasting these, the fix I found is to paste into notepad and re type all of the " as the ones on the page are not recognised and cause a Syntax error pop up when trying to save the WMI query

    Leave a Reply