【发布时间】: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