Eu tive a sensação de que postar aqui seria o que me fez encontrar a resposta real eu mesmo!
Encontrei uma propriedade do processador do sistema que parece responder exatamente à pergunta correta em todos os SOs com que testei (servidor e estação de trabalho do XP / 2003 para cima). O que eu tenho é v_GS_PROCESSOR.Is64Bit0
, o que dá um 1
ou um 0
dependendo se a CPU é ou não capaz de 64 bits.
Minhas consultas do SCCM agora são (para um resumo de cima para baixo):
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
E (para a lista de máquinas por máquina):
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