我试图找出是否存在WMI的位置,将返回的OS架构(即32位或64位),将跨Windows的“所有”版本。 我想我已经想通了看着我Win2k8系统的时候,我发现以下几点:
Win32_OperatingSystem / OSArchitecture
我错了。 它不会出现这个字段上WIN2K3系统存在。 哎呀!
那么,有没有人知道另一场的WMI说:“是”同一个跨服务器版本? 如果不是这样,关于相同的注册表键值是什么? 我使用的一个工具,只允许我配置简单的现场查询,所以我不能使用复杂的脚本来执行。
任何帮助将不胜感激。
Answer 1:
如果您需要的操作系统架构,而不是处理器,这个作品,如果你有信心,你有没有64位Windows 5.x的系统:
Set colItems = objWMI.ExecQuery("Select * from Win32_OperatingSystem",,48)
on error resume next
For Each objItem in colItems
Ver = objItem.Version
OSname = split(objItem.Name,"|")
Arch = "32-bit"
if left(Ver,3) >= 6.0 then ' 5.x doesn't support this property
Arch = objItem.OSArchitecture
end if
Next
wscript.echo " OS Version: " & Ver & " {" & trim(OSname(0)) & " " & Arch & "}"
Answer 2:
试试这个:
wmic cpu get DataWidth /format:list
Answer 3:
你使用确实返回结果在计算机的每一个物理CPU的简单的WMI查询。 如果你有一个单一的处理器,多核心处理器将只返回一个结果。 我们可以安全地假设计算机有ATLEAST一个CPU,所以让我们只使用来自CPU0的信息。
要选择唯一的64位操作系统...
select * from Win32_Processor where DeviceID="CPU0" and AddressWidth="64"
要选择唯一的32位操作系统...
select * from Win32_Processor where DeviceID="CPU0" and AddressWidth="32"
Answer 4:
请使用以下WMI类和属性 - 这应该在2003 / XP和Win7 / 2008R2工作
ROOT\CIMV2\Win32_Processor
AddressWidth
从的Technet :
在32位操作系统,该值是32和64位操作系统上为64这个属性从CIM_Processor继承。
Answer 5:
一段时间的搜索和测试后,我想出了一个“修复/回答”虽然这不正是我所期待的。 从通过注册表进行查询似乎是在所有版本我在我的实验室进行WIN2K3与Win2k8一致。 这里就是我从拉动信息:
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment
KEY: PROCESSOR_ARCHITECTURE
它显示x86或AMD64。 它并不完美,但至少它给了我正确的答案每次。
尽管如此,如果有人知道一致“类”或注册表项,将输出32/64,32位/ 64位,或X86 / X64,我将不胜感激的信息。
Answer 6:
为了扩大在第一个答案,使用:
select AddressWidth from Win32_Processor where DeviceID="CPU0"
Answer 7:
(未测试),但也许:
CIM_Processor类(AddressWidth)
Answer 8:
在VBS:
On Error Resume Next
Const wbemFlagReturnImmediately = &h10
Const wbemFlagForwardOnly = &h20
Set objWMIService = GetObject("winmgmts:\\.\root\CIMV2")
Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_Processor", "WQL", _
wbemFlagReturnImmediately + wbemFlagForwardOnly)
For Each objItem In colItems
WScript.Echo "AddressWidth: " & objItem.AddressWidth
Next
Answer 9:
在批处理
IF EXIST "%PROGRAMFILES% (x86)" goto 64BIT
goto 32BIT
:64BIT
echo tantalana a 64 bit
goto FINE
:32BIT
echo tantalaniccia a 32 bit
goto FINE
:FINE
echo ciao
Answer 10:
你可以试试下面用WMIC确定平台的语法:
wmic path win32_processor where deviceid="cpu0" get Addresswidth
Answer 11:
我知道这是旧的,我张贴这在未来的人。 试着看一下我的脚本 。 这是写在批处理,并使用WMIC如果它是计算机上,但该操作系统是否正在运行一个32位的64位操作系统并不需要它才能确定。
Answer 12:
环境变量“PROCESSOR_ARCHITECTURE”是所有需要。 就像注册表调用这将返回“AMD64”或“86”。
Answer 13:
这不正是你问什么,但我只是用这一个WMI查询(组策略首选项目标),它似乎迄今的工作:
SELECT * FROM Win32_ComputerSystem WHERE SystemType="x64-based pc"
文章来源: How to determine OS Platform with WMI?