【问题标题】:Check memory type (ECC or not) by using PowerShell使用 PowerShell 检查内存类型(ECC 与否)
【发布时间】:2017-12-04 20:42:24
【问题描述】:

我正在尝试检查公司所有 PC 上的内存类型。我的测试代码在based on info from here下面:

Get-WmiObject Win32_PhysicalMemory |
    Select-Object -Property PSComputerName, DeviceLocator, Manufacturer, PartNumber, @{label = "Size/GB" ; Expression = {$_.capacity / 1GB}}, Speed, datawidth, totalwidth, @{label = "ECC" ; Expression = {
        if ( $_.totalwidth > $_.datawidth ) {
            "$($_.DeviceLocator) is ECC memory type"
        }
        else {
            "$($_.DeviceLocator) is non-ECC Memory Type"
        }
    }
} | Out-GridView 

结果显示内存类型为非ecc:

但是,如果我使用“HWiNFO64 v4.30”之类的第 3 方工具,则结果是 ECC 内存。见下图。如何使用 PowerShell 获得与下图相同的内存信息?似是而非的“内存类型”“速度”和“ECC”

【问题讨论】:

  • 如果将$_.totalwidth > $_.datawidth 更改为$_.totalwidth -gt $_.datawidth 会发生什么?如果这不起作用[int]($_.totalwidth) -gt [int]($_.datawidth)
  • 您的问题是您需要使用正确的比较运算符并转换整数,否则您将进行字符串比较
  • 我不确定 WMI 数据是否应该 100% 准确。我可能弄错了,但我不希望它自己从实际硬件中查询数据。
  • 我不确定这是否正确 [$_.totalwidth > $_.datawidth] = [Non-ECC RAM]...除了 WMI 我还能用什么来查询 ram 信息?跨度>

标签: windows powershell memory


【解决方案1】:

Vikas 可能对应该考虑的信息的准确性有一些好处。链接的帖子也避开了其他问题。

您在使用此代码时遇到的问题是您使用了PowerShell Comparison Operators

它们的格式为-gt-lt,例如分别大于和小于。假设你的逻辑你应该只需要更新

if ( $_.totalwidth > $_.datawidth )

if ( $_.totalwidth -gt $_.datawidth )

【讨论】:

  • 感谢您的提示。 powershell的结果表明内存的类型是0,这是未知的,也缺少一些信息。
猜你喜欢
  • 2017-09-24
  • 2023-03-12
  • 2022-08-11
  • 1970-01-01
  • 1970-01-01
  • 2018-12-03
  • 1970-01-01
  • 1970-01-01
  • 2017-07-13
相关资源
最近更新 更多