使用 PowerShell 检查内存类型(ECC 与否)
Check memory type (ECC or not) by using PowerShell
我正在尝试检查公司所有 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 获取与下图相同的内存信息?似是而非的 "Memory type" "Speed" 和 "ECC"
Vikas 可以就信息的准确性提出一些值得考虑的优点。链接的 post 也避开了其他问题。
您使用此代码 运行 遇到的问题是您对 PowerShell Comparison Operators 的使用。
例如-gt
和-lt
的格式,分别大于和小于。假设你的逻辑你应该只需要更新
if ( $_.totalwidth > $_.datawidth )
到
if ( $_.totalwidth -gt $_.datawidth )
我正在尝试检查公司所有 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 获取与下图相同的内存信息?似是而非的 "Memory type" "Speed" 和 "ECC"
Vikas 可以就信息的准确性提出一些值得考虑的优点。链接的 post 也避开了其他问题。
您使用此代码 运行 遇到的问题是您对 PowerShell Comparison Operators 的使用。
例如-gt
和-lt
的格式,分别大于和小于。假设你的逻辑你应该只需要更新
if ( $_.totalwidth > $_.datawidth )
到
if ( $_.totalwidth -gt $_.datawidth )