[玩转系统] 在 PowerShell 中获取内存使用百分比 [3 种方法]
作者:精品下载站 日期:2024-12-14 05:31:42 浏览:13 分类:玩电脑
在 PowerShell 中获取内存使用百分比 [3 种方法]
我们可以有多个用例来获取内存使用百分比。例如:
- 获取总体内存使用百分比
- 获取总体内存使用百分比历史记录
- 获取一个/所有进程的内存使用百分比
让我们一一学习它们。
跟注内存使用百分比
我们可以使用 Get-Counter
和 Get-WmiObject
cmdlet 来检索总体内存使用百分比。下面让我们详细探讨一下它们。
使用 Get-Counter
Cmdlet
使用 Get-Counter
cmdlet 获取总内存使用量百分比。
使用获取计数器 Cmdlet:
$performance_counter = Get-Counter '\Memory\% Committed Bytes In Use'
$usedMemoryPercentage = $performance_counter.CounterSamples[0].CookedValue
Write-Host "Used Memory Percentage: $usedMemoryPercentage%"
输出 :
Used Memory Percentage: 57.7237514214878%
我们使用 Get-Counter cmdlet 获取系统上已用内存字节百分比的性能计数器,并将其存储在 $performance_counter
变量中。计数器路径'\Memory\% Comlated Bytes In Use'
指定了内存计数器,该计数器测量已提交内存字节与可用物理内存总量的比例。
然后,我们从 $performance_counter
检索性能计数器的值并将其分配给 $usedMemoryPercentage
变量。现在,我们如何获得性能计数器的值?为此,我们使用了 $performance_counter
变量的 CounterSamples
属性,其中包含性能计数器示例数组。
由于我们打算检索第一个计数器样本,因此我们使用 [0]
来访问它。然后,我们使用计数器示例的 CookedValue
属性来获取消息使用百分比。最后,我们使用 Write-Host
将其显示在 PowerShell 控制台上。
使用 Get-WmiObject
Cmdlet
如果您使用 PowerShell 3.0 或更早版本,请使用 Get-WmiObject
cmdlet 获取内存使用百分比。
使用 Get-WmiObject cmdlet:
$usedMemory = Get-WmiObject -Class Win32_OperatingSystem
$totalMemory = $usedMemory.TotalVisibleMemorySize
$freeMemory = $usedMemory.FreePhysicalMemory
$usedMemoryPercentage = ($totalMemory - $freeMemory) / $totalMemory * 100
Write-Host "Used Memory Percentage: $usedMemoryPercentage%"
输出 :
Used Memory Percentage: 54.8795984097428%
我们使用 Get-WmiObject cmdlet 获取有关操作系统的详细信息,特别是使用 -Class
参数指定的 Win32_OperatingSystem
。我们将检索到的详细信息存储在 $usedMemory
变量中。
然后,我们使用 $usedMemory
变量的 TotalVisibleMemorySize
和 FreePhysicalMemory
属性分别获取可见内存大小和可用物理内存。我们将它们存储在两个名为 $totalMemory
和 $freeMemory
的单独变量中。
之后,我们通过从 $totalMemory
中减去 $freeMemory
的量,然后将输出除以 $totalMemory
来计算内存使用百分比>,然后乘以 100
。最后,我们将计算出的百分比存储在 $usedMemoryPercentage
变量中,我们进一步将其与 Write-Host
cmdlet 一起使用以在 PowerShell 控制台上打印。
如果您使用的是 PowerShell 3.0 或更高版本,请优先使用 Get-CimInstance cmdlet,因为自 PowerShell 3.0 起,Get-WmiObject
已被 Get-CimInstance
取代。
使用 Get-CimInstance cmdlet:
$usedMemory = Get-CimInstance -Class Win32_OperatingSystem
$totalMemory = $usedMemory.TotalVisibleMemorySize
$freeMemory = $usedMemory.FreePhysicalMemory
$usedMemoryPercentage = ($totalMemory - $freeMemory) / $totalMemory * 100
Write-Host "Used Memory Percentage: $usedMemoryPercentage%"
输出 :
Used Memory Percentage: 54.8795984097428%
到现在为止,我们已经学会了如何获取总体内存使用百分比;如果您只想知道计算机上当前进程消耗了多少内存百分比怎么办?让我们看看如何做到这一点。
跟注内存使用百分比历史记录
使用 Get-Counter
cmdlet 获取总体内存使用百分比历史记录。
使用获取计数器 Cmdlet:
Get-Counter '\Memory\% Committed Bytes In Use' -Continuous -SampleInterval 5
输出 :
Timestamp CounterSamples
--------- --------------
7/15/2023 11:38:12 AM \desktop-nkk10jm\memory\% committed bytes in use :
57.3812244593588
7/15/2023 11:38:17 AM \desktop-nkk10jm\memory\% committed bytes in use :
57.3770478035736
7/15/2023 11:38:22 AM \desktop-nkk10jm\memory\% committed bytes in use :
57.3751683014853
7/15/2023 11:38:27 AM \desktop-nkk10jm\memory\% committed bytes in use :
57.3706575337263
我们已经在第一个示例代码中了解了 Get-Counter
cmdlet 和计数器路径。在这里,我们将 -SampleInterval
参数设置为 5
以获取正在使用的已提交内存字节百分比的性能计数器数据,采样间隔为 5
秒。但是,-Continous
参数用于持续更新数据,直到用户从键盘输入 Ctrl+C 来停止更新。
一个/多个进程的内存使用百分比
我们可以使用 Get-Process
和 Get-WmiObject
cmdlet 来查找一个或所有进程的内存使用百分比。
使用 Get-Process
Cmdlet
使用 Get-Process
cmdlet 获取本地计算机上当前进程的内存使用百分比。
使用 Get-Process Cmdlet:
$current_process = Get-Process -Id $PID
$usedMemoryPercentage = ($current_process.WorkingSet / (Get-WmiObject -Class Win32_ComputerSystem).TotalPhysicalMemory) * 100
Write-Host "Used Memory Percentage: $usedMemoryPercentage%"
输出 :
Used Memory Percentage: 0.918036721468859%
我们使用带有 -Id
参数的 Get-Process
cmdlet 来获取有关当前进程的信息。我们使用 $PID
变量指定当前进程,该变量包含当前 PowerShell 进程的进程 ID(也称为 PID)。
通过使用 $PID
设置 -Id
,我们获得了当前 PowerShell 会话的进程详细信息,并将其分配给 $current_process
变量。
然后,我们计算内存使用百分比并将其分配给 $usedMemoryPercentage
变量,该变量与 Write-Host
一起使用以显示在控制台上。但是我们如何计算内存使用百分比呢?
为此,我们将 $current_process
对象的 WorkingSet
属性(包含进程正在使用的内存量)除以 TotalPhysicalMemory
属性Win32_ComputerSystem
WMI 类(包含计算机上安装的物理内存总量)的值,然后将结果乘以 100
。
这样,上面的代码就检索了当前进程的进程对象,计算了该进程的内存使用百分比,然后将输出显示在PowerShell控制台上。
使用 Get-WmiObject
Cmdlet
使用 Get-WmiObject
cmdlet 获取本地计算机上所有进程的内存使用百分比。
使用 Get-WmiObject Cmdlet:
Get-WmiObject -Class Win32_PerfFormattedData_PerfProc_Process |
Select-Object Name, IDProcess,
@{Name="Memory Usage %";Expression={($_.WorkingSetPrivate / (Get-WmiObject Win32_ComputerSystem).TotalPhysicalMemory) * 100}}
输出 :
Name IDProcess Memory Usage %
---- --------- --------------
ApplicationFrameHost 8556 0.0132102058275879
CalculatorApp 15368 0.00387112258683896
CompPkgSrv 14692 0.00532279355690357
CxMonSvc 3224 0.0582120058995908
CxUtilSvc 3248 0.00503245936289065
Greenshot 10684 0.0124359813102202
HPHotkeyNotification 15640 0.00832291356170376
HotKeyServiceUWP 3740 0.011323033566504
HxAccounts 10436 0.0434533510372673
HxOutlook 480 0.000435501291019383
HxTsr 5836 0.0515343194372936
Idle 0 9.67780646709739E-05
IntelCpHDCPSvc 1264 0
IntelCpHeciSvc 1384 0.00508084839522613
LanWlanWwanSwitchingServiceUWP 3104 0.0180007200288012
Locator 3504 0
Memory Compression 1888 3.33555277694979
MicTray64 2348 0.00479051420121321
... ... ...
... ... ...
... ... ...
上面的代码检索了机器上当前正在运行的进程的信息,并计算了每个进程的内存使用百分比。如何?
首先,我们使用 Get-WmiObject
cmdlet 和 Win32_PerfFormattedData_PerfProc_Process 类来获取计算机上运行的所有进程的性能计数器日期。请注意,我们使用 -Class 参数来指定 Win32_PerfFormattedData_PerfProc_Process 类;但是,我们也可以省略这个参数。
然后,我们将 Get-WmiObject
生成的输出通过管道传输到 Select-Object
cmdlet 以选择 Name
、IDProcess
,以及相应的内存使用百分比。我们通过将进程的私有工作集除以计算机的总物理内存,然后乘以100
来计算内存百分比。
请注意,我们使用哈希表创建了一个名为 MemoryUsage%
的计算属性。
这就是如何在 PowerShell 中获取内存使用百分比的全部内容。
猜你还喜欢
- 03-30 [玩转系统] 如何用批处理实现关机,注销,重启和锁定计算机
- 02-14 [系统故障] Win10下报错:该文件没有与之关联的应用来执行该操作
- 01-07 [系统问题] Win10--解决锁屏后会断网的问题
- 01-02 [系统技巧] Windows系统如何关闭防火墙保姆式教程,超详细
- 12-15 [玩转系统] 如何在 Windows 10 和 11 上允许多个 RDP 会话
- 12-15 [玩转系统] 查找 Exchange/Microsoft 365 中不活动(未使用)的通讯组列表
- 12-15 [玩转系统] 如何在 Windows 上安装远程服务器管理工具 (RSAT)
- 12-15 [玩转系统] 如何在 Windows 上重置组策略设置
- 12-15 [玩转系统] 如何获取计算机上的本地管理员列表?
- 12-15 [玩转系统] 在 Visual Studio Code 中连接到 MS SQL Server 数据库
- 12-15 [玩转系统] 如何降级 Windows Server 版本或许可证
- 12-15 [玩转系统] 如何允许非管理员用户在 Windows 中启动/停止服务
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[影视] 黑道中人 Alto Knights(2025)剧情 犯罪 历史 电影
[古装剧] [七侠五义][全75集][WEB-MP4/76G][国语无字][1080P][焦恩俊经典]
[实用软件] 虚拟手机号 电话 验证码 注册
[电视剧] 安眠书店/你 第五季 You Season 5 (2025) 【全10集】
[电视剧] 棋士(2025) 4K 1080P【全22集】悬疑 犯罪 王宝强 陈明昊
[软件合集] 25年6月5日 精选软件22个
[软件合集] 25年6月4日 精选软件36个
[短剧] 2025年06月04日 精选+付费短剧推荐33部
[短剧] 2025年06月03日 精选+付费短剧推荐25部
[软件合集] 25年6月3日 精选软件44个
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电视剧] 欢乐颂.5部全 (2016-2024)
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[影视] 【稀有资源】香港老片 艺坛照妖镜之96应召名册 (1996)
[剧集] 神经风云(2023)(完结).4K
[剧集] [BT] [TVB] [黑夜彩虹(2003)] [全21集] [粤语中字] [TV-RMVB]
[实用软件] 虚拟手机号 电话 验证码 注册
[资源] B站充电视频合集,包含多位重量级up主,全是大佬真金白银买来的~【99GB】
[影视] 内地绝版高清录像带 [mpg]
[书籍] 古今奇书禁书三教九流资料大合集 猎奇必备珍藏资源PDF版 1.14G
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电影] 美国队长4 4K原盘REMUX 杜比视界 内封简繁英双语字幕 49G
[电影] 死神来了(1-6)大合集!
[软件合集] 25年05月13日 精选软件16个
[精品软件] 25年05月15日 精选软件18个
[绝版资源] 南与北 第1-2季 合集 North and South (1985) /美国/豆瓣: 8.8[1080P][中文字幕]
[软件] 25年05月14日 精选软件57个
[短剧] 2025年05月14日 精选+付费短剧推荐39部
[短剧] 2025年05月15日 精选+付费短剧推荐36部
- 最新评论
-
- 热门tag