Получить количество ядер в 64-битной системе XP

Хей,

Я написал функцию, которая должна дать мне количество ядер системы Windows. Работает на всех системах кроме XP 64 bit. Вот как я получаю информацию:

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

Что касается "NumberOfCores", на странице MSDN Microsoft говорится, что "Windows Server 2003, Windows XP и Windows 2000: это свойство недоступно". Где-то я читал, возможно с установленным SP3. Я полагаю, что это правда, потому что это работает на XP 32-битных системах. Но нет SP3 для XP 64...

Есть ли другой способ получить информацию?

Спасибо

2 ответа

Я думаю, что проще всего прочитать переменную среды NUMBER_OF_PROCESSORS.

Вам нужны "ядра" или "количество логических процессоров, включая гиперпоточность"? (Другими словами, хотите ли вы считать гиперпоточность "ядром")?

В любом случае, копируя мой ответ на аналогичный вопрос некоторое время назад:

Если вам действительно необходимо различать реальные ядра, микросхемы и логические процессоры, API для вызова - GetLogicalProcessInformation

GetSystemInfo, если вы просто хотите узнать, сколько логических процессоров на машине (без различий для гиперпоточности).

Другие вопросы по тегам