Skip to main content
PDQ.com mobilePDQ.com desktop
Support
Try Now

Find Windows 11 Compatible Devices With PDQ Inventory

Brock BinghamBrock Bingham
·

Windows 11 is here, and with it, a pretty restrictive list of minimum system requirements. Some of these requirements are geared towards protecting users and their data by beefing up security measures, which seems reasonable in our world of rampant cyberattacks and vulnerabilities. Others seem designed to ensure Windows 11 provides a buttery smooth user experience. Regardless of the reasons, these strict requirements have many users and sysadmins wondering if they'll be able to upgrade to Windows 11. If you're wondering if your devices made the cut, PDQ Inventory is here to help.

Windows 11 Minimum System Requirements

We've covered the details of Windows 11's minimum system requirements in a couple of other articles, which you can find here and here, so I won't bore you with my thoughts on the requirements. Instead, let's dive right into the details.

  • Processor:  1 gigahertz (GHz)or faster with 2 or more cores on a compatible 64-bit processor or System on a Chip (SoC)

  • RAM:  4 gigabyte (GB)

  • Storage:  64 GB or larger storage device

  • System firmware:  UEFI, Secure Boot capable

  • TPM:  Trusted Platform Module (TPM) version 2.0

  • Graphics card:  Compatible with DirectX 12 or later with WDDM 2.0 driver

  • Display:  High definition (720p) display that is greater than 9" diagonally, 8 bits per color channel

Additionally, here are the officially supported processors in Windows 11.

Windows 11 Supported Intel Processors

Windows 11 Supported AMD Processors

Windows 11 Supported Qualcomm Processors

Windows 11 Health Check App

In case you're wondering, yes, Microsoft does offer a utility that checks if your computer meets the minimum requirements of Windows 11. You can find the utility on Microsoft's Windows 11 webpage.

Towards of bottom of the page, you'll find an option to download the PC Health Check app.

Once you've downloaded the MSI, double-click it to begin the setup.

  1. Accept the terms of the license agreement and click Install.

  2. When the installation finishes, make sure Open Windows PC Health Check is selected, then click Finish.

  3. The PC Health Check application should launch and display the PC health at a glance page. Click Check now in the Introducing Windows 11 panel.

  4. A new window will open up, indicating if your computer meets Windows 11 minimum requirements.

  5. As you can see, my virtual machine does not meet the minimum requirements, which is expected. This screen also details which components failed to meet the requirements. If your device passes, you'll be shown this screen.

I've highlighted this application because, for many home users, this is a simple way to find out if their personal computers qualify for the upgrade. But, if you're a sysadmin and have hundreds or thousands of machines you manage, running this application on each computer is not a very viable option, and that's where PDQ Inventory comes in.

Windows 11 Minimum Requirements PowerShell Script

The PowerShell scanner in PDQ inventory makes it possible to scan for just about anything on a Windows device. The versatility of the PowerShell scanner is unmatched, which is why we'll use it to scan for Windows 11's minimum requirements.

Here's the script that we'll be using for the scanner. It was created by Jordan and showcased during the PDQ Window 11 webcast, though the version we'll be using has been slightly modified. You can also find the script in the bonus content section of the PDQ GitHub page

###Configure parameters
[CmdletBinding()]
param (
    [int]$TPMminVer = 1.2,
    [int]$DirectxVer = 12,
    [int]$WDDMVer = 2.0
)
###Disable IE first run
$keyPath = 'Registry::HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Internet Explorer\Main'
if (!(Test-Path $keyPath)) { New-Item $keyPath -Force | Out-Null }
Set-ItemProperty -Path $keyPath -Name "DisableFirstRunCustomize" -Value 1
###Generate CSV from Microsoft approved processor list
$URI = "https://docs.microsoft.com/en-us/windows-hardware/design/minimum/supported/windows-11-supported-intel-processors","https://docs.microsoft.com/en-us/windows-hardware/design/minimum/supported/windows-11-supported-amd-processors","https://docs.microsoft.com/en-us/windows-hardware/design/minimum/supported/windows-11-supported-qualcomm-processors"
$table = @()
$proc =  Get-CimInstance -class CIM_Processor | Select-Object Name
foreach($Address in $URI){
    $Result = Invoke-WebRequest $Address
    $data = ($Result.ParsedHtml.getElementsByTagName("table") | Select-Object -First 1).rows
    forEach($row in $data){
        if($row.tagName -eq "tr"){
            $thisRow = @()
            $cells = $row.children
            forEach($cell in $cells){
            if($cell.tagName -imatch "t[dh]"){
                    $thisRow += $cell.innerText
                }
            }
            $table += $thisRow -join ","
        }
    }
}
$final = $table | ConvertFrom-Csv -Delimiter ","
$ProcCompatible = $false
foreach($cpu in $final.model){
    
    if($proc.name -like "*" + $cpu + "*"){
        $ProcCompatible = $true
        break
    }
}
###Get Procossor
$proc =  Get-CimInstance -class CIM_Processor | Select-Object Name
$ProcCompatible = $false
###Compare processor to approved list
foreach($cpu in $final.model){
    
    if($proc.name -like "*" + $cpu + "*"){
        $ProcCompatible = $true
        break
    }
}
###Test TPM
$TPMCompatible = $false
Try{$GetTPM = (Get-tpm).TPMPresent}
Catch{}
If($GetTPM -eq $true){
    $TPMVer = Get-CimInstance -Namespace "root/cimv2/Security/MicrosoftTPM" -ClassName win32_tpm | Select-Object specversion
    If($TPMVer.specversion.Split(',')[0] -ge $TPMminVer){
        $TPMCompatible = $true
    }
}
###Test UEFI
$UEFICompatible = $false
Try {$UEFI = Confirm-SecureBootUEFI}
Catch{}
If($UEFI){
    $UEFICompatible = $True
}
###Test Direct X 12
Start-Process -FilePath "C:\Windows\System32\dxdiag.exe" -ArgumentList "/dontskip /whql:off /t C:\dxdiag.txt" -Wait
###Load File into file stream
$file = New-Object System.IO.StreamReader -ArgumentList "C:\dxdiag.txt"
###Setting initial variable state
$Directx12Compatible = $false
$WDDMCompatible = $false
###Reading file line by line
try {
    while ($null -ne ($line = $file.ReadLine())) {
###Mark start of applied policies
        if ($line.contains("DDI Version:") -eq $True) {
            if($line.Trim("DDI Version: ") -ge $DirectxVer){
                $Directx12Compatible = $true
            }
        }
        elseif ($line.contains("Driver Model:") -eq $True) {
            if($line.Trim("Driver Model: WDDM ") -ge $WDDMVer){
                $WDDMCompatible = $true
            }
        }
    }
}
finally {
    $file.Close()
    Remove-Item "C:\dxdiag.txt" -Force
}
[pscustomobject]@{
    Processor = $ProcCompatible
    TPM = $TPMCompatible
    UEFI = $UEFICompatible
    Directx12 = $Directx12Compatible
    WDDM = $WDDMCompatible 
}

Here's a simplified breakdown of what this script is doing. If you want the complete breakdown straight from Jordan himself, make sure you check out the webcast linked above.

The script starts with designating the specific parameters we'll be checking against. In this case, TPM 2.0, DirectX 12, and WDDM 2.0. You can modify these parameters if you need or want. For example, you can change TPM to check for version 1.2, but we'll talk more about that in a moment.

Next, since this script requires Internet Explorer to check the list of approved processors from Microsoft's website, the script disables IE's first run wizard, which could cause issues with the lookup. With the first run wizard disabled, the script creates a CSV file containing the approved processors from Microsoft. The script then runs a GetCimInstance query to return the processor and compares it to the processors listed in the CSV file.

Next, the script runs another GetCimInstance query to return the TPM version of the machine, comparing it to the TPM version designated in the parameters we set.

The script then runs the Confirm-SecureBootUEFI cmdlet to ensure the machine meets the UEFI requirement.

Lastly, the script calls dxdiag.exe and exports its results to a text file. The script then starts the StreamReader to read through the text file, line by line, looking for DDI Version and the Driver Model, comparing the results to the DirectX and WDDM parameters set at the beginning of the script.

You'll notice that we don't scan for all of the Windows 11 minimum requirements because some of the required data is already collected by PDQ Inventory by default, such as memory and storage requirements.

Creating A Scanner In PDQ Inventory

Now that we have our PowerShell script, we can use it to create a scanner in PDQ Inventory.

  1. With PDQ Inventory open, click the Scan Profiles button.

  2. Click New.

  3. Enter a name for the scan profile, for example, Windows 11 Compatibility Checker.

  4. Click Add > PowerShell.

  5. Enter a name for the scanner. You can use the same name used in step 3.

  6. Next, you have the option to either point the scanner to a .ps1 file or enter the script directly into the scanner. I've already saved a .ps1 file for this script, so I'll point the scanner to that file.

  7. Click OK twice to finish creating the scanner.

With the scanner created, we can begin running it against our workstations.

  1. Select the Workstations collection from the navigation tree in PDQ Inventory. We're targeting only our workstations because we aren't worried about our servers being compatible with Windows 11.

  2. Right-click on the Workstations collections and click Scan Collection > (Your Windows 11 Scanner Compatability Scanner).

The scanner will run through the computers in the workstations collections. To view the result once the scan finishes, double-click on one of the computers to open the computer details window, then click on the PowerShell page from the list on the left.

You can see from this image that the processor, UEFI, and Directx12 all passed the compatibility check. Unfortunately, the TPM and WDDM requirements weren't met, which isn't surprising since I'm running this against virtual machines.

Here are the results from running the same scanner against a physical machine.

Creating A Windows 11 Dynamic Collection

Now that the scanner has finished and we've collected all the information we needed to determine Windows 11 compatibility, the last thing we need to do is create a dynamic collection of the computers that meet all of the requirements.

  1. In PDQ Inventory, click New Dynamic Collection.

  2. Name the dynamic collection.

  3. Add the following filters.

    FilterColumnComparisonValue
    All
    PowerShell (Your PS Scanner)DirectX12Is True
    PowerShell (Your PS Scanner)ProcessorIs True
    PowerShell (Your PS Scanner)TPMIs True
    PowerShell (Your PS Scanner)UEFIIs True
    PowerShell (Your PS Scanner)WDDMIs True
    ComputerMemoryGreater Than3.9GB
    Disk DriveSize GBGreater Than63
  4. Click OK when finished.

Once you've finished creating the collection, any computers that meet the requirements will automatically be populated into the collection, letting you easily identify which computer can upgrade to Windows 11.

What If A Computer Doesn't Meet The Minimum Requirements

If you really want to jump into Windows 11 but your computer or computers don't meet the minimum requirements, all hope is not lost. While you may never be able to upgrade from Windows 10 to Windows 11 via Windows updates, you can download the Windows 11 ISO and manually install it right now on un-qualified machines, and it'll probably run just fine. However, there is a catch.

According to Microsoft, if you install Windows 11 on a device that doesn't meet the minimum requirements, Windows 11 will run in an "unsupported state." Microsoft further clarified that devices in an "unsupported state" are not entitled to receive security and feature updates. While this seems like a big deal, and it potentially could be, I find it hard to believe that Microsoft wouldn't provide updates for these types of devices. More than likely, this is just Microsoft's way of avoiding responsibility for these devices if any issues occur. Still, I would use caution going this route, especially if you are dealing with company equipment and not personal equipment.

Wrapping Up

If you're running from machine to machine trying to figure out which computers qualify for Windows 11, you're working too hard. Let PDQ Inventory and the PowerShell scanner help you identify which computers meet the Windows 11 minimum requirements.

Ready to put the PowerShell Scanner through its paces?

Take our 14-day Free Trial. Feel the power of the PowerShell scanner.
Start a Trial

Don't miss the next post!

How to Block the Windows 11 Upgrade

Windows 11 is here, but that doesn't mean you have to use it. Discover several different ways to block Windows 11 from installing on your computers.

windows11
PDQ.com
© 2021 PDQ.com Corporation
Products
  • PDQ Deploy ®
  • PDQ Inventory ®
  • Pricing
  • Downloads
  • Licensing
  • Buy