Important Notice: On February 29th, this community was put into read-only mode. All existing posts will remain but customers are unable to add new posts or comment on existing. Please feel to join our Community Discord for any questions and discussions.

Is there a filter for detecting a 64-Bit capable processor? I can find 32/64 bit OS filter, but thats not what i want.

I am looking to find out what computers have windows 7 32bit but have 64 bit capable processors.  i assume i would be looking for a variable such as instruction set, or em64T.  What filter settings should i be looking for?

0

Comments

6 comments
Date Votes
  • I have used the Win32_Processor and searched for "DataWidth" to get the CPU Bits and then Win32_OperatingSystem and searched for "OSArchitecture" for the OS Bits in my scripting.  You can tell if the OS is 32 bit and the CPU is capable of 64 bit instructions.  I normally use perl scripting, but these can also be queried from .vbs scripts or powershell scripts as well.

    0
  • DW,

    Thank you for the reply.  I understand a bit about the datawidth.  I am new to pdq inventory, so when you say the "win32_processor"  is that a search variable?  What category is it under?  In other words, how would i actually do that search to make a "collection of 64 bit processors"

    Thank you in advance!

    0
  • Actually, my comment was directed to scripting with WMI to get the info, I have not found a direct report within the inventory software.  I wrote a quick script that will create a directory called C:\Test and place a file in it named for what you are looking for.  The file's name will be something like "32-bit os on 64-bit cpu.txt".  You can use the "scan profiles" in PDQ inventory to scan for all files in C:\Test (or wherever you change the path to).  You can create a dynamic collection to search for files containing "32-bit os on 64-bit cpu.txt", that result should be what you are looking for.  The script I wrote is below, save it with a .vbs extension and invoke it with pdq deploy!  Good luck!

     

    Set objFSO=CreateObject("Scripting.FileSystemObject")
    Set objWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")

    Set collection = objWMI.ExecQuery("Select * from Win32_Processor")
    For Each item in collection
        CPU = item.DataWidth & "-bit CPU"
    Next

    Set collection = objWMI.ExecQuery("Select * from Win32_OperatingSystem")
    For Each item in collection
        OS = item.OSArchitecture & " OS"
    Next

    filepath = "C:\Test"
    If Not objFSO.FolderExists(filepath) Then
        objFSO.CreateFolder filepath
    End If
    filename = filepath & "\" & OS & " on " & CPU & ".txt"
    Set objFile = objFSO.CreateTextFile(filename,True)
    objFile.Write "OS Bits:  "& OS & vbCrLf
    objFile.Write "CPU Bits: "& CPU & vbCrLf
    objFile.Close

     

    0
  • Oh, when you are done with this search, you should probably create a deployment to remove the C:\Test directory when you have collected the results you need.

    0
  • this is completely brilliant.  i can definitely do this.

    0
  •   : ) Good Luck!

    0