【问题标题】:Powershell Get-CimInstance -Class CIM_PhysicalMemory returns answer in partsPowershell Get-CimInstance -Class CIM_PhysicalMemory 部分返回答案
【发布时间】:2022-11-04 00:32:48
【问题描述】:
ForEach ($servername in $server)
{
Get-CimInstance -Class CIM_PhysicalMemory -ComputerName $servername.ItemArray[0]  -ErrorAction Stop | Select-Object PSComputerName ,@{Name="GB";Expression={$_.Capacity/1GB}} 
}

我想要一个关于每台机器的所有服务器总 RAM 的列表,上面的代码可以工作,但不是一直有效。答案是这样的:

PSComputerName GB 
-------------- --
Server1        16
Server1        16
Server1        16
Server1        16
Server2         4
Server3         8
Server4        16
Server4        16
Server4        16
Server4         8
Server5        16

等等......

但是为什么总分为4部分服务器116x4,总计 64 GB。 8 CPU机器。服务器4共有 56 GB 和 6 个 CPU。所有服务器都是虚拟的。虚拟机

为什么它不能只返回 64GB 或 56GB?一台和两台处理器机器返回 ONE 行(参见 Server5。)我刚刚更改了服务器的名称。 必须有一些非常简单的答案,我尝试用谷歌搜索几乎所有包含 Get-CimInstance -Class CIM_PhysicalMemory 的页面,但可以找到任何好的解释。

希望有人可以解释我没有想到的。也许如何更改代码。

干杯!

【问题讨论】:

    标签: powershell


    【解决方案1】:

    很简单,CIM_PhysicalMemory 为您提供每个内存模块的信息。服务器 1 有 4 个模块,每个模块 16GB = 总计:64GB。所以你需要对这些值求和,例如:

    (get-ciminstance -Query "select capacity from CIM_PhysicalMemory" | Measure-Object -Property capacity -Sum).sum / 1GB
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-05
      • 2014-08-22
      • 2021-09-07
      • 2012-12-02
      • 2014-10-13
      • 2020-04-27
      • 1970-01-01
      • 2022-01-13
      相关资源
      最近更新 更多