0

我正在尝试使用 power 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 命令或性能计数器或其他方式获得物理内存的百分比?

在此处输入图像描述

在此处输入图像描述

4

1 回答 1

0

我认为您的方法是正确的,但是内存单元是错误的。

此外,建议使用 Get-CimInstance

所以代码看起来像这样

# 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
于 2020-05-22T08:30:42.827 回答