1

嘿嘿,

我写了一个函数,它应该给我一个 Windows 系统的核心数量。它适用于除 XP 64 位以外的所有系统。这是我获取信息的方式:

$objWMIItems = $objWMIService.ExecQuery ("SELECT * FROM Win32_Processor")
If (0 == IsObj($objWMIItems)) Then
       ;~ errorhandling
Else
For $objElement In $objWMIItems
    $nCoreNumber = $objElement.NumberOfCores
Next

关于“NumberOfCores”,微软的 MSDN 页面告诉我“Windows Server 2003、Windows XP 和 Windows 2000:此属性不可用”。在我读到的某个地方,安装了 SP3 是可能的。我想这是真的,因为它可以在 XP 32 位系统上工作。但是没有适用于 XP 64 的 SP3...

有没有其他方法可以获取信息?

谢谢

4

2 回答 2

3

我认为阅读 NUMBER_OF_PROCESSORS 环境变量是最容易的。

于 2011-07-29T16:31:19.667 回答
0

您想要“核心”还是“包括超线程在内的逻辑处理器数量”?(换句话说,你想把超线程算作一个“核心”吗)?

无论如何,从不久前的一个类似问题中复制我的答案:

如果你真的需要区分实际的内核、芯片和逻辑处理器,调用的API是 GetLogicalProcessInformation

GetSystemInfo如果只是想知道一台机器上有多少个逻辑处理器(对超线程没有区别。)。

于 2011-07-29T17:15:26.337 回答