SCCM报告识别具有64位硬件的机器

目前正在研究Windows 7的部署选项。我们正在研究的问题之一是32位与64位。 我试图运行一个SCCM报告来对付我们的资产,以确定哪些机器是64位的(无论他们是否正在运行64位操作系统)。

网上似乎有一些资源( 这里 , 这里和这里 ),但他们似乎没有在运行32位Windows XP的机器上正常工作。 32位XP机器似乎总是报告说他们正在32位硬件上运行。

我目前正在运行的查询是:

select sys.netbios_name0, sys.Operating_System_Name_and0 as OperatingSystem, case when pr.addresswidth0=64 then '64bit OS' when pr.addresswidth0=32 then '32bit OS' end as [Operating System Type], case when pr.DataWidth0=64 then '64bit Processor' when pr.DataWidth0=32 then '32bit Processor' end as [Processor Type], case when pr.addresswidth0=32 and pr.DataWidth0=64 then 'YES' end as [32-bit OS on x64 processor] from v_r_system sys join v_gs_processor pr on sys.resourceid=pr.resourceid 

我也试过这个,报告所有的“Windows XP Professional”系统都是基于“基于X86的PC”,而不是基于x64的,即使它们中的一些肯定是:

 select OS.Caption0, CS.SystemType0, Count(*) from dbo.v_GS_COMPUTER_SYSTEM CS Left Outer Join dbo.v_GS_OPERATING_SYSTEM OS on CS.ResourceID = OS.ResourceId Group by OS.Caption0, CS.SystemType0 Order by OS.Caption0, CS.SystemType0 

例如,我们有一套戴尔Latitude E4200笔记本电脑。 其中一些正在运行32位Windows XP SP3,其中一些正在运行32位Windows 7,一些正在运行64位Windows 7.所有笔记本电脑是相同的,都来自相同的顺序。 其中Windows 7(32和64位)报告说硬件是64位的,而Windows XP机器报告说他们只有32位的能力。

有谁知道是否有另一个值我可以查询以正确获得在XP硬件的能力,或者是否有一个修补程序,将得到它报告正确的信息?

我有一种感觉,在这里张贴是我自己find真正的答案!

已经find了系统处理器的一个属性,似乎正好回答了我所testing过的所有操作系统上的问题(服务器和工作站从XP / 2003起)。 我有什么是v_GS_PROCESSOR.Is64Bit0给出10取决于是否是64位的CPU能力。

我的SCCM查询现在是(对于自顶向下的摘要):

 select OS.Caption0, case when pr.Is64Bit0=1 then '64-bit' when pr.Is64Bit0=0 then '32-bit' end as [Processor Type], Count(*) from dbo.v_gs_processor PR Left Outer Join dbo.v_GS_OPERATING_SYSTEM OS on PR.ResourceID = OS.ResourceId Group by OS.Caption0, pr.Is64Bit0 Order by OS.Caption0, pr.Is64Bit0 

和(对于机器列出的机器):

 select sys.netbios_name0, sys.Operating_System_Name_and0 as OperatingSystem, case when pr.Is64Bit0=1 then 'Yes 64-bit' when pr.Is64Bit0=0 then 'No 32-bit' end as [Processor Is 64-Bit?], case when pr.addresswidth0=64 then '64-bit OS' when pr.addresswidth0=32 then '32-bit OS' end as [Operating System Type], case when pr.DataWidth0=64 then '64-bit Processor' when pr.DataWidth0=32 then '32-bit Processor' end as [Processor Type (XP Lies)], case when pr.addresswidth0=32 and pr.Is64Bit0=1 then 'YES' end as [32-bit OS on x64 processor] from v_r_system sys join v_gs_processor pr on sys.resourceid=pr.resourceid