Получить количество ядер в 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, если вы просто хотите узнать, сколько логических процессоров на машине (без различий для гиперпоточности).