在 PowerShell 中查找独立于 OS 的处理器架构

Find architecture of processor independent of OS in PowerShell

我正在尝试检测设备的处理器是否会 支持 64 位 Windows 操作系统安装,而不考虑 [=45] 的位数=] 检查时安装在其上的操作系统。我希望通过 PowerShell(最低 3.0)执行此操作,但我也可以通过分别调用 cmdcscript 来使用 Batch 或 VBScript。代码必须可通过非交互式脚本执行,并且无需用户交互即可 return 编辑值。

以下方法在我的测试设备上不起作用,这是一个 32 位 Windows 10 VM,Settings 应用将其识别为包含基于 x64 的处理器:

我在上面提到 设置 应用程序可以收集此信息来告诉用户他们的设备理论上支持安装 64 位 Windows 操作系统。知道这一点让我不愿意使用第三方命令行工具(尽管它仍然是一个可行的最后手段)。

用例将执行此检查,然后使用该信息衍生出一个 if 子句。

Win32_Processor WMI class 有一个 属性 Architecture。根据处理器类型,这采用以下值:

  • x86 为 0
  • 1 个用于 MIPS
  • 阿尔法 2
  • 3 用于 PowerPC
  • 6 用于 ia64
  • x64 为 9

因此,在配备 Core i7 处理器的计算机上,(Get-WMIObject -Class Win32_Processor).Architecture 将 return 9 告诉您它是 x64 处理器 - 即使您安装了 32-位 Windows 就可以了。

使用 VB 脚本,您可以检查 OS 类型的地址宽度和 CPU 类型的数据宽度。将以下内容放入 .vbs 文件中:

address_width=  GetObject("winmgmts:root\cimv2:Win32_Processor='cpu0'").AddressWidth
data_width= GetObject("winmgmts:root\cimv2:Win32_Processor='cpu0'").DataWidth

WScript.Echo "Running " & address_width _
    & " Bit Windows on " & data_width & " Bit processor."

有很多方法可以确定 Windows 是 32 位还是 64 位 - 但这是我发现的检查处理器类型的最佳方法。我花了一些时间才找到它,所以我想我会分享以防其他人在看:-)