关于在电源中使用了多少物理内存百分比的性能计数器 shell

Performance Counter on how much Physical Memory % Used in Power shell

我正在尝试使用性能计数器监控本地计算机的物理内存使用百分比 shell。在资源监视器中,在内存选项卡下,我们可以了解物理内存的百分比 used.Also 在任务管理器中,在性能选项卡--> 内存下,我们可以看到已使用的内存百分比。还要检查图像以供参考。

我正在按照以下步骤执行 shell 以获得相同的结果

1) 使用下面的命令,我获得了最大的物理内存

 $totalPhysicalmemory = gwmi Win32_ComputerSystem | % {$_.TotalPhysicalMemory /1GB}

2) 使用下面的计数器命令,我得到了平均可用内存

 $avlbleMry = ((GET-COUNTER -Counter "\Memory\Available MBytes"|select -ExpandProperty countersamples | select -ExpandProperty cookedvalue )/1GB

3) 计算已用物理内存百分比:(四舍五入到小数点后 2 位数字)

 (($totalPhysicalmemory-$avlbleMry)/$totalPhysicalmemory)*100

我做的对吗?这是获取内存使用百分比的正确方法吗?有没有更好的方法来使用 WMI 命令或性能计数器或其他方式获取物理内存的百分比?

我觉得你的做法是对的,但是内存单位不对。

此外,using Get-CimInstance is recommended

所以代码看起来像这样

# use the same unit `/1MB` and `Available MBytes`
$totalPhysicalmemory = (Get-CimInstance Win32_ComputerSystem).TotalPhysicalMemory /1MB
$avlbleMry = (Get-Counter -Counter "\Memory\Available MBytes").CounterSamples.CookedValue
(($totalPhysicalmemory-$avlbleMry)/$totalPhysicalmemory)*100

以及其他一些方式

# Win32_OperatingSystem, KB
$osInfo = Get-CimInstance -ClassName Win32_OperatingSystem
$total = $osInfo.TotalVisibleMemorySize
$free = $osInfo.FreePhysicalMemory
$used = $total - $free
$usedPercent =  $used/$total * 100
echo $usedPercent
# Microsoft.VisualBasic, bytes
Add-Type -AssemblyName Microsoft.VisualBasic
$computerInfo = [Microsoft.VisualBasic.Devices.ComputerInfo]::new()
$total = $computerInfo.TotalPhysicalMemory
$free = $computerInfo.AvailablePhysicalMemory
$used = $total - $free
$usedPercent =  $used/$total * 100
echo $usedPercent