假设我在 Windows 计算机上运行(电源)shell。
有没有我可以用来得到的一句话:
注意:我只想要一个数字作为命令输出,而不是任何标题或文本。
您可以使用
[Environment]::ProcessorCount
来获取逻辑处理器计数。它也适用于非 Windows。
https://learn.microsoft.com/en-us/dotnet/api/system.environment.processorcount
注:
下面的答案假设具有多核的单处理器(插槽)。
Win32_Processor
CIM/WMI 类的文档,每个处理器(插槽) 都存在该类的实例,因此如果您的系统安装了多个处理器(每个处理器都有多个内核),请使用类似以下内容获取逻辑核心的总数量(. NumberOfLogicalProcessors
);使用 .NumberOfCores
作为 物理 核心:
$totalLogicalCores = (
(Get-CimInstance –ClassName Win32_Processor).NumberOfLogicalProcessors |
Measure-Object -Sum
).Sum
.NumberOfEnabledCore
[原文如此] 属性(Windows 10+、Windows Server 2016+),它指的是 enabled 物理 核心。超线程倍增因子似乎没有明显的属性,因此为了确定启用的逻辑核心数量,您可能必须使用.NumberOfEnabledCore * (.ThreadCount / .NumberOfCores
)Ran Turner 的答案提供了关键的指针,但可以通过两种方式改进:
Get-CimInstance
)取代了 PowerShell v3(2012 年 9 月发布)中的 WMI cmdlet(例如,Get-WmiObject
)。因此,应该避免使用 WMI cmdlet,尤其是因为未来所有工作都将集中在的 PowerShell(核心)(v6+)甚至不再有它们了。但请注意,WMI 仍然是 CIM cmdlet 的“底层”。有关更多信息,请参阅此答案。
,与所有
Format-*
cmdlet 一样,旨在为人类观察者生成用于显示格式,并且不输出适合以后编程处理的数据(请参阅)这个答案了解更多信息)。 要使用输入对象属性的
Select-Object
cmdlet。 (如果输出对象具有 4 个或更少的属性并且未被捕获,则它们会隐式 格式化,就像已调用
Format-Table
一样;具有 5 个或更多属性,则隐式地Format-List
)。
# Creates a [pscustomobject] instance with
# .NumberOfCores and .NumberOfLogicalProcessors properties.
$cpuInfo =
Get-CimInstance –ClassName Win32_Processor |
Select-Object -Property NumberOfCores, NumberOfLogicalProcessors
# Save the values of interest in distinct variables, using a multi-assignment.
# Of course, you can also use the property values directly.
$coreCountPhysical, $coreCountLogical = $cpuInfo.NumberOfCores, $cpuInfo.NumberOfLogicalProcessors
当然,如果您只对values
感兴趣(CPU 仅算作数字),则不需要 intermediate 对象,并且可以省略上面的 Select-Object
调用。
: 如果您想要一个创建不同变量的单行代码,而不重复 - 昂贵的 -
Get-CimInstance
调用,您可以使用 aux.利用 PowerShell 使用赋值
作为表达式:的能力的变量
$coreCountPhysical, $coreCountLogical = ($cpuInfo = Get-CimInstance -ClassName Win32_Processor).NumberOfCores, $cpuInfo.NumberOfLogicalProcessors
输出它们(将它们作为 2 元素数组返回),请将整个语句括在 (...)
中。
输出数字,只需省略$coreCountPhysical, $coreCountLogical =
部分即可。
Get-WmiObject –class Win32_processor | ft NumberOfCores,NumberOfLogicalProcessors
要了解正在运行的线程数:
(Get-Process|Select-Object -ExpandProperty Threads).Count
给出处理器的数量。 当您使用多个插座时也适用
Get-WmiObject
已弃用。与
Get-CimInstance
一起去。不要在脚本中使用别名。拼写命令和参数。显式优于隐式。Get-CimInstance –ClassName Win32_Processor | Format-Table -Property NumberOfCores,NumberOfLogicalProcessors
更新:如果您只想将单个数值分配给变量。
$NumberOfCores = (Get-CimInstance –ClassName Win32_Processor).NumberOfCores
$NumberOfLogicalProcessors = (Get-CimInstance –ClassName Win32_Processor).NumberOfLogicalProcessors