Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 在不进行超线程读取的情况下从计算机获取内核总数_Windows_Processor_Hyperthreading_Cpu Cores - Fatal编程技术网

Windows 在不进行超线程读取的情况下从计算机获取内核总数

Windows 在不进行超线程读取的情况下从计算机获取内核总数,windows,processor,hyperthreading,cpu-cores,Windows,Processor,Hyperthreading,Cpu Cores,这是一个艰难的过程 我需要使用命令从我的服务器输出确切数量的内核 我的测试: X:在一台Windows服务器上,该服务器有4个处理器(插槽)和2个内核,每个处理器都没有HT Y:在一台Windows服务器上,该服务器有两个处理器(插槽)和6个内核,每个内核带有HT 仅获取已安装处理器的数量:X为4个,Y为2个 | | X: 8 cores | Y: 12 cores | | | 4x2 (no HT) | 2x6 (HT)

这是一个艰难的过程

我需要使用命令从我的服务器输出确切数量的内核

我的测试:

  • X
    在一台Windows服务器上,该服务器有4个处理器(插槽)和2个内核,每个处理器都没有HT
  • Y
    在一台Windows服务器上,该服务器有两个处理器(插槽)和6个内核,每个内核带有HT
仅获取已安装处理器的数量:X为4个,Y为2个

|                | X: 8 cores  | Y: 12 cores |
|                | 4x2 (no HT) | 2x6 (HT)    |
|----------------|-------------|-------------|
| Desired output | 8           | 12          |
| GetSystemInfo  | 4           | 2           | 
%NUMBER\u处理器数%
是个不错的选择,但它考虑了HT。它告诉我X是8,Y是24(因为它有HT,所以我需要它来显示12)

“wmic cpu获取NumberOfCores”
获取每个插槽的信息。例如:

X:

>wmic cpu get NumberOfCores
NumberOfCores
2
2
2
2
>wmic cpu get NumberOfCores
NumberOfCores
6
6
Y:

>wmic cpu get NumberOfCores
NumberOfCores
2
2
2
2
>wmic cpu get NumberOfCores
NumberOfCores
6
6
意义

|                            | X: 8 cores  | Y: 12 cores |
|                            | 4x2 (no HT) | 2x6 (HT)    |
|----------------------------|-------------|-------------|
| Desired output             | 8           | 12          |
| GetSystemInfo              | 4           | 2           | 
| %NUMBER_OF_PROCESSORS%     | 8           | 24          |
| wmic cpu get NumberOfCores | 2,2,2,2     | 6,6         |

我希望在CMD中保持简单,但我正在考虑启动一个Powershell脚本来完成所有的数学和其他工作


有什么想法吗?

如果我理解正确,这个vbscript会给你们两个。Powershell方法-

如果服务器包含多个物理处理器,Powershell可能会提供更好的报告布局

Get-WmiObject –class Win32_processor | ft systemname,Name,DeviceID,NumberOfCores,NumberOfLogicalProcessors

如果我理解您对每台服务器的问题,那么您希望检索一个整数,即物理处理器(核心)的总数。根据超线程是否可用并启用,这可能是逻辑处理器数量的一半,但您特别希望排除这些处理器

的实例表示一个单处理器套接字。
NumberOfCores
属性表示该套接字提供的物理处理器的数量。我们可以使用以下命令在PowerShell中查询:

要为每个
Win32\u处理器
实例添加
NumberOfCores
属性,我们可以使用:

在结果输出中,
Sum
将包含物理内核的总数,
Count
将包含套接字的总数


请注意,在较旧版本的Windows/PowerShell上,您可能需要替换
Get-CimInstance
。此外,如果确实要获取逻辑(超线程)处理器的计数,可以用
NumberOfLogicalProcessors
属性替换
NumberOfCores

建议的命令在逻辑核数不超过64个的计算机上不起作用

(获取CimInstance Win32\u ComputerSystem)。NumberOfLogicalProcessors


晚些时候向参与方提供逻辑核(HT核)的数量,但这将作为完整的DOS解决方案

set val=0 & for /f  "tokens=2 delims==" %d in ('wmic cpu get NumberOfCores /value ^| findstr "="') do @set /A val+=%d >NUL
  • 设置val=0
    初始化变量
  • wmic cpu get NumberOfCores/value
    以列表格式检索值,更便于解析。wmic的输出中有很多空行。列表格式为我们提供了一个要筛选的公共字符,
    =
    。因此,
    ^ | findstr“=”
    。管道逃逸是为了被for而不是外壳本身卡住
  • set/A
    允许进行计算,这里是所有找到值的总和。此命令还输出其结果,从而执行NUL重定向

因此,在X上,您可以获得val=8,在Y val=12上,可以使用
get ComputerInfo
和作用域来访问所需的属性

$processor=获取计算机信息-属性CsProcessors
$processor.CsProcessors
这应该会给你一些

Name                      : Intel(R) Core(TM) i7-6600U CPU @ 2.60GHz
Manufacturer              : GenuineIntel
Description               : Intel64 Family 6 Model 78 Stepping 3
Architecture              : x64
AddressWidth              : 64
DataWidth                 : 64
MaxClockSpeed             : 2808
CurrentClockSpeed         : 2607
NumberOfCores             : 2 <== that one
NumberOfLogicalProcessors : 4 
…
…
名称:英特尔(R)核心(TM)i7-6600U处理器@2.60GHz
制造商:GenuineIntel
说明:Intel64系列6型号78步进3
架构:x64
地址宽度:64
数据宽度:64
最大时钟速度:2808
当前时钟速度:2607

NumberOfCores:2您使用的powershell版本是什么?我使用的是7.1,所以我想我应该试试5.1,看看windows powershell能得到什么。如果这是区别的话,我会在答案上加上限制。哦,我的错。我只查看了
getcomputerinfo
中的表,其中一个表只有逻辑核,但子表CsProcessors具有您所说的属性。适用于5.1、6和7。哦,很酷,谢谢你的反馈!我今天刚回到办公室,打算试一试^_^
set val=0 & for /f  "tokens=2 delims==" %d in ('wmic cpu get NumberOfCores /value ^| findstr "="') do @set /A val+=%d >NUL
Name                      : Intel(R) Core(TM) i7-6600U CPU @ 2.60GHz
Manufacturer              : GenuineIntel
Description               : Intel64 Family 6 Model 78 Stepping 3
Architecture              : x64
AddressWidth              : 64
DataWidth                 : 64
MaxClockSpeed             : 2808
CurrentClockSpeed         : 2607
NumberOfCores             : 2 <== that one
NumberOfLogicalProcessors : 4 
…
…