How do I get total physical memory size using PowerShell without WMI?

byte, memory, powershell, wmi

Solution

If you don't want to use WMI, I can suggest systeminfo.exe. But, there may be a better way to do that.

(systeminfo | Select-String 'Total Physical Memory:').ToString().Split(':')[1].Trim()

Problem

I'm trying to get the physical memory size using PowerShell, but without using get-wmiobject. I have been using the following PS cmdlet to get the physical memory size, but the value changes with each new poll. ``` (get-counter -counter "\Memory\Available Bytes").CounterSamples[0].CookedValue + (get-counter -counter "\Memory\Committed Bytes").CounterSamples[0].CookedValue ``` In general, this gives me a value around: 8605425664 bytes I'm also testing the value I get from adding these counters with the returned value from ``` (get-wmiobject -class "win32_physicalmemory" -namespace "root\CIMV2").Capacity ``` This gives me the value: 8589934592 bytes So, not only is the total physical memory calculated from counters changing, but it's value differs from the WMI value by a couple megabytes. Anyone have any ideas as to how to get the physical memory size without using WMI?

Original source