如何使用 PowerShell 查找 CPU 和 RAM 使用情况

  1. 如何使用 PowerShell 查找 CPU 和 RAM 使用情况,使用 Get-Counter
  2. 如何使用 PowerShell 查找 CPU 和 RAM 使用情况,使用 Get-WmiObject
  3. 如何使用 PowerShell 查找 CPU 和 RAM 使用情况,使用 Get-Process
  4. 结论
如何使用 PowerShell 查找 CPU 和 RAM 使用情况

随着技术的进步,高效的系统监控需求变得越来越重要。Windows 管理员和用户常常寻找快速有效的方法来评估其 Windows 机器上的 CPU 和 RAM 使用率,以确保系统性能最佳。

在本文中,我们将探索 PowerShell 的强大功能,这是一种在 Windows 环境中多功能的脚本语言,并发现如何无缝地使用它来查找和监控 CPU 和 RAM 使用情况。

通过利用 PowerShell 的能力,用户可以实时获得系统的内存使用情况,帮助他们做出明智的决策并确保顺畅的计算体验。

如何使用 PowerShell 查找 CPU 和 RAM 使用情况,使用 Get-Counter

PowerShell 通过其强大的 cmdlet 提供了一种稳健的解决方案来获取实时性能数据。其中一个 cmdlet,Get-Counter,提供了一种多功能且高效的方式来访问这些信息。

Get-Counter cmdlet 允许我们从本地或远程计算机获取性能计数器数据。为了监控 CPU 和 RAM 使用情况,我们可以使用特定的性能计数器路径。

以下是基本语法:

Get-Counter -Counter "\CounterPath"

CPU 使用情况的计数器路径是'\Processor(_Total)\% Processor Time',而 RAM 使用情况的计数器路径是'\Memory\Available MBytes'

PowerShell 使用 Get-Counter 查找 CPU 和内存使用情况的代码示例

让我们深入探讨一个完整的工作代码示例,演示如何使用 Get-Counter 来监控 CPU 和 RAM 使用情况:

# PowerShell get memory usage
Get-Counter '\Processor(_Total)\% Processor Time' -Continuous | ForEach-Object {
    $cpuUsage = $_.CounterSamples.CookedValue
    Write-Host "Current CPU Usage: $cpuUsage%"
}

Get-Counter '\Memory\Available MBytes' -Continuous | ForEach-Object {
    $ramUsage = $_.CounterSamples.CookedValue
    Write-Host "Available RAM: ${ramUsage}MB"
}

让我们逐个分析代码的每个部分,以理解其功能。

监控 CPU 使用情况:

Get-Counter '\Processor(_Total)\% Processor Time' -Continuous | ForEach-Object {
    $cpuUsage = $_.CounterSamples.CookedValue
    Write-Host "Current CPU Usage: $cpuUsage%"
}

在第一部分中,我们使用 Get-Counter 来获取有关总处理器时间使用的百分比的实时数据。指定的计数器路径'\Processor(_Total)\% Processor Time'针对的是所有核心的整体 CPU 使用情况。

-Continuous 参数确保命令持续运行,提供实时更新,并且直到按下CTRL+C后才停止。

Get-Counter 的输出然后通过 ForEach-Object 循环进行传递。对于每个接收到的计数器样本,脚本提取处理的值(CookedValue),代表当前的 CPU 使用百分比。

这个值存储在变量 $cpuUsage 中,并使用 PowerShell 函数 Write-Host 打印显示当前的 CPU 使用率。

代码输出:

powershell 内存百分比

监控内存使用情况(RAM):

Get-Counter '\Memory\Available MBytes' -Continuous | ForEach-Object {
    $ramUsage = $_.CounterSamples.CookedValue
    Write-Host "Available RAM: ${ramUsage}MB"
}

脚本的第二部分专注于监控内存百分比。与 CPU 部分类似,我们使用 Get-Counter 和计数器路径'\Memory\Available MBytes'来持续获取可用内存的兆字节数据。

-Continuous 参数确保持续监控。

同样,输出在 ForEach-Object 循环中被处理。对于每个接收到的计数器样本,脚本提取代表 RAM 中可用字节的处理值,存储在变量 $ramUsage 中。

最后一步是使用 Write-Host 在控制台上显示可用 RAM 信息。

代码输出:

获取内存使用情况

这些实时信息的显示对于系统管理员和用户都是无价的,使他们能够及时识别和解决性能问题。Get-Counter 简化了监控 CPU 和 RAM 使用的过程,使其成为 PowerShell 工具箱中的一个基本工具。

如何使用 PowerShell 查找 CPU 和 RAM 使用情况,使用 Get-WmiObject

除了 Get-Counter cmdlet,PowerShell 还提供了另一个强大的工具 Get-WmiObject,用于收集系统信息,包括 CPU 和 RAM 使用情况。

Get-WmiObject cmdlet允许我们访问 Windows 管理工具(WMI)类,提供关于系统的大量信息。为了监控 CPU 和物理内存使用情况,查询特定的 WMI 类和属性。

基本语法如下:

Get-WmiObject -Class WMI_Class | Select-Object Property1, Property2, ...

对于 CPU 使用情况,我们使用 Win32_Processor 类,而对于 RAM 或物理内存使用情况,使用 Win32_OperatingSystem 类。

PowerShell 使用 Get-WmiObject 查找 CPU 和 RAM 使用情况的代码示例

让我们探索一个完整的工作代码示例,演示如何使用 Get-WmiObject 监控 CPU 和 RAM 使用情况:

# PowerShell get memory usage of all the processes
$cpuObject = Get-WmiObject -Class Win32_Processor
$cpuLoadPercentage = $cpuObject.LoadPercentage
Write-Host "CPU Load Percentage: $cpuLoadPercentage"

$ramObject = Get-WmiObject -Class Win32_OperatingSystem
$ramUsageGB = [math]::Round(($ramObject.TotalVisibleMemorySize - $ramObject.FreePhysicalMemory) / 1GB, 2)
Write-Host "Available RAM: ${ramUsageGB}GB"

让我们逐个分析上面的 PowerShell 脚本的每个部分,以理解其功能。

监控 CPU 使用情况:

$cpuObject = Get-WmiObject -Class Win32_Processor
$cpuLoadPercentage = $cpuObject.LoadPercentage
Write-Host "CPU Load Percentage: $cpuLoadPercentage"

在这里,脚本首先利用 Get-WmiObjectWin32_Processor 类查询信息,该类包含有关系统处理器的详细信息。获得的信息存储在变量 $cpuObject 中。

随后,脚本从 $cpuObject 中提取 LoadPercentage 属性,代表当前的 CPU 负载百分比。这个值然后被存储在变量 $cpuLoadPercentage 中。

最后,使用 Write-Host 在控制台上打印显示 CPU 负载百分比的消息。

代码输出:

PowerShell 总内存使用量

监控内存使用情况(RAM):

$ramObject = Get-WmiObject -Class Win32_OperatingSystem
$ramUsageGB = [math]::Round(($ramObject.TotalVisibleMemorySize - $ramObject.FreePhysicalMemory) / 1GB, 2)
Write-Host "Available RAM: ${ramUsageGB}GB"

在内存监控部分,脚本使用 Get-WmiObjectWin32_OperatingSystem 类中检索信息,该类包含与操作系统相关的各种属性,包括内存相关的详细信息。获取的信息存储在变量 $ramObject 中。

接下来,脚本通过从总物理内存或可见内存大小(TotalVisibleMemorySize)中减去可用物理内存(FreePhysicalMemory)来计算可用 RAM(以千兆字节为单位)。使用 [math]::Round 将结果四舍五入到两位小数,以确保输出更整洁。

以千兆字节为单位的可用 RAM 值存储在变量 $ramUsageGB 中。最后,使用 Write-Host 在控制台上打印显示可用 RAM 的消息。

代码输出:

powershell 释放内存

使用 Get-WmiObject cmdlet 获得的信息提供了关于系统性能的宝贵见解,使用户能够有效监测资源利用情况并做出优化系统的明智决策。脚本的简单性和清晰性使其成为管理员和用户的多功能工具。

如何使用 PowerShell 查找 CPU 和 RAM 使用情况,使用 Get-Process

在我们探索使用 PowerShell 监控系统性能的过程中,我们现在将专注于 Get-Process cmdlet。与 Get-CounterGet-WmiObject 不同,Get-Process 提供有关本地计算机上正在运行的进程的信息,使我们能够提取 CPU 和内存百分比详细信息。

Get-Process cmdlet 检索有关当前正在运行的进程的信息。为了监控 CPU 和 RAM 使用情况,我们将从输出中筛选和提取相关信息。

基本语法如下:

Get-Process -Name "ProcessName" | Select-Object Property1, Property2, ...

对于 CPU 使用情况,我们将重点关注 CPU 属性,而对于 RAM 使用情况,则关注 WorkingSet 属性。

PowerShell 使用 Get-Process 查找 CPU 和 RAM 使用情况的代码示例

让我们探索一个完整的工作代码示例,演示如何使用 Get-Process 监控 CPU 和 RAM 使用情况:

# PowerShell get memory usage
$cpuProcesses = Get-Process | Sort-Object CPU -Descending | Select-Object -First 5
ForEach ($process in $cpuProcesses) {
    $processName = $process.ProcessName
    $cpuUsage = $process.CPU
    Write-Host "Process: $processName, CPU Usage: $cpuUsage%"
}

$ramProcesses = Get-Process | Sort-Object WorkingSet -Descending | Select-Object -First 5
ForEach ($process in $ramProcesses) {
    $processName = $process.ProcessName
    $ramUsageMB = [math]::Round($process.WorkingSet / 1MB, 2)
    Write-Host "Process: $processName, RAM Usage: ${ramUsageMB}MB"
}

与之前的示例类似,以下 PowerShell 脚本也分为两个部分:一个关注 CPU 使用情况,另一个关注 RAM 使用情况。让我们逐个分析代码的每个部分。

监控 CPU 使用情况:

$cpuProcesses = Get-Process | Sort-Object CPU -Descending | Select-Object -First 5
ForEach ($process in $cpuProcesses) {
    $processName = $process.ProcessName
    $cpuUsage = $process.CPU
    Write-Host "Process: $processName, CPU Usage: $cpuUsage%"
}

在第一个代码部分,脚本首先使用 Get-Process 检索系统上所有正在运行的进程的信息。然后根据 CPU 使用情况使用 Sort-Object 按降序排序输出。

Select-Object -First 5 确保仅考虑 CPU 使用最高的前 5 个进程。resulting processes are saved in the variable $cpuProcesses

ForEach 循环用于迭代 $cpuProcesses 中的每个进程对象。对于每个进程,脚本提取进程名称(ProcessName)和 CPU 使用情况(CPU)。

这些信息随后使用 Write-Host 在控制台上显示,呈现进程名称及其对应的 CPU 使用百分比。

代码输出:

powershell 内存百分比

监控内存使用情况(RAM):

$ramProcesses = Get-Process | Sort-Object WorkingSet -Descending | Select-Object -First 5
ForEach ($process in $ramProcesses) {
    $processName = $process.ProcessName
    $ramUsageMB = [math]::Round($process.WorkingSet / 1MB, 2)
    Write-Host "Process: $processName, RAM Usage: ${ramUsageMB}MB"
}

在第二个代码部分,采取类似的方法。同样,Get-Process 用于获取所有正在运行的进程的信息。

然后根据 RAM 使用情况(WorkingSet)按降序排序输出,并仅选择前 5 个正在运行的进程。resulting processes are stored in the variable $ramProcesses

ForEach 循环遍历每个进程在 $ramProcesses 中。对于每个进程,脚本提取进程名称并计算 RAM 使用情况(以兆字节为单位)。

计算涉及将工作集大小除以 1 兆字节,并使用 [math]::Round 将结果四舍五入到两位小数。然后使用 Write-Host 在控制台上显示这些信息,展示进程名称及其对应的 RAM 使用情况(以兆字节为单位)。

代码输出:

PowerShell 内存使用情况

该脚本提供了监控 CPU 和内存使用情况的动态方式,专注于资源消耗较大的进程。通过利用 Get-Process 的功能,管理员和用户可以获得有关其系统上资源密集型活动的见解。

结论

监控 CPU 和 RAM 使用情况对于维护健康和响应迅速的计算环境至关重要。PowerShell 凭借其丰富的 cmdlet 集提供了强大的工具,比如 Get-CounterGet-WmiObjectGet-Process 来简化此过程。

无论您更喜欢实时更新、详细的 WMI 类信息,还是对单个进程的见解,PowerShell 都提供灵活的解决方案以满足多样的监控需求。通过将这些技术纳入您的系统管理工具箱,您可以轻松随时了解 CPU 和 RAM 使用情况,从而实现及时干预和主动的系统优化。

Enjoying our tutorials? Subscribe to DelftStack on YouTube to support us in creating more high-quality video guides. Subscribe
作者: Rohan Timalsina
Rohan Timalsina avatar Rohan Timalsina avatar

Rohan is a learner, problem solver, and web developer. He loves to write and share his understanding.

LinkedIn Website