Мне не удалось найти способ определить, какие процессоры / процессоры / сокеты присутствуют на ПК / сервере.
Какие-либо предложения?
Пытаться:
' *** Get the server name
set wsh_shell = wscript.CreateObject("Wscript.Shell")
set wsh_env = wsh_shell.Environment("PROCESS")
server_name = wsh_env("COMPUTERNAME")
set wsh_env = nothing
set wsh_shell = nothing
' *** Open the WMI service
set wmi_service = GetObject("winmgmts:\\" & server_name)
' *** Processor
set wmi_objectset = wmi_service.InstancesOf("Win32_Processor")
for each wmi_object in wmi_objectset
wscript.echo cstr(wmi_object.MaxClockSpeed) & " - " _
& cstr(wmi_object.NumberOfCores)
next
set wmi_service = nothing
У меня сценарий напечатал тактовую частоту, но вы можете посмотреть любое из свойств, упомянутых в ссылке в сообщении Стюарта Дункельда.
Джон Ренни
WMI WIN32_Processor класс дает основную информацию об установленных процессорах ..
В добавок к Win32_Processor класс, упомянутый в других ответах, у вас также есть Win32_ComputerSystem класс, который имеет значения NumberOfLogicalProcessors и NumberOfProcessors. Примечания в документации о поддержке этих двух значений ОС немного неверны. XP поддерживает значение NumberOfLogicalProcessors, начиная с SP3. Я предполагаю, что Win2003 также будет поддерживать его при выпуске следующего пакета обновления.
В старой версии Windows (Win2003, XP SP2 или более ранней) Win32_Processor.SocketDesignation всегда возвращает «Proc 1» для логического процессора. Этот сценарий будет работать с любой версией Windows.
$procs = [object[]]$(get-WMIObject Win32_Processor) # force into array even if only 1
if ($procs[0].NumberOfCores -eq $null) { # old version
$physCount = new-object hashtable
$procs |%{$physCount[$_.SocketDesignation] = 1}
"Physical processors: {0}; Logical processors: {1}" -f $physCount.count, $procs.count
} else { # new version
"Physical processors: {0}; Logical processors: {1}" -f $procs.count, `
$($procs|measure-object NumberOfLogicalProcessors -sum).Sum
}
Имейте в виду, что в Windows Server 2003, SP1 или SP2 свойство NumberOfCores Win32_Processor недоступно, если вы не установили исправление 180973 (для x86 или x64), как указано в этом KB: http://support.microsoft.com/kb/932370 . То же самое для Windows XP SP2 - см. KB: http://support.microsoft.com/kb/936235 В верхней части каждой страницы базы знаний есть ссылка на то, как запросить исправление по электронной почте. Это свойство впервые появилось в Windows Vista.