【发布时间】:2018-07-13 05:20:09
【问题描述】:
我正在尝试检测设备的处理器是否支持 64 位 Windows 操作系统安装,而没有注意检查时安装在其上的 Windows 操作系统的位数.我希望通过 PowerShell(最低 3.0)来执行此操作,但我也可以通过分别调用 cmd 和 cscript 来使用 Batch 或 VBScript。代码必须可以通过非交互式脚本执行,并且无需用户交互即可返回值。
以下方法不适用于我的测试设备,即 32 位 Windows 10 虚拟机,Settings 应用将其识别为包含基于 x64 的处理器:
- WMI:Win32_ComputerSystem/SystemType - 返回“基于 X86 的 PC”
- WMI:Win32_Processor/CPU0/AddressWidth - 返回 32
- PowerShell:[intPtr]::size – 返回 4(64 位设备返回 8)
- PowerShell:$env:PROCESSOR_ARCHITECTURE & IDENTIFIER – 返回 x86
- 注册表:HKLM\Hardware\Description\System\CentralProcessor\0 - 不返回任何可以运行搜索以确定 64 位指令能力的内容
我在上面提到,Settings 应用程序可以收集这些信息来告诉用户他们的设备理论上支持安装 64 位 Windows 操作系统。知道这一点让我不愿意使用第三方命令行工具(尽管它仍然是可行的最后手段)。
用例将执行此检查,然后使用该信息衍生一个 if 子句。
【问题讨论】:
-
Win32_Processor 属性架构怎么样 - 在 PowerShell 中,
(Get-WMIObject -Class Win32_Processor).Architecture?它应该采用的值是以下之一:0 - x86; 1 - MIPS; 2 - 阿尔法; 3 - 电源电脑; 6 - ia64; 9 - x64。 -
行得通,杰夫!谢谢你。请随时将其发布为答案,我会这样标记。
-
完成!谢谢!
-
$Env:PROCESSOR_ARCHITECTURE还有$Env:PROCESSOR_IDENTIFIER -
@TheIncorrigible1 我已经说过 PROCESSOR_ARCHITECTURE 不起作用。作为记录,PROCESSOR_IDENTIFIER 声明该设备是基于 x86 的。 Jeff 的答案是迄今为止唯一被确认有效的答案。
标签: windows powershell architecture processor