如何使用 PowerShell 查詢 CPU 和 RAM 使用情況
-
如何使用 PowerShell 查找 CPU 和 RAM 使用情況,使用
Get-Counter
-
如何使用 PowerShell 查找 CPU 和 RAM 使用情況,使用
Get-WmiObject
-
如何使用 PowerShell 查找 CPU 和 RAM 使用情況,使用
Get-Process
- 結論

隨著科技進步,系統監控的效率需求變得愈加重要。Windows 管理員和使用者經常尋求快速有效的方法來評估其 Windows 機器的 CPU 和 RAM 使用情況,以達到最佳系統性能。
在本文中,我們將探索 PowerShell 的強大功能,這是一種在 Windows 環境中的多功能腳本語言,並發現它如何被用來無縫地查找和監控 CPU 和 RAM 使用情況。
透過利用 PowerShell 的功能,用戶能夠獲得系統內存使用情況的即時洞察,賦予他們做出明智決策並確保流暢運算體驗的能力。
如何使用 PowerShell 查找 CPU 和 RAM 使用情況,使用 Get-Counter
PowerShell 以其強大的 Cmdlet 提供了獲取即時性能數據的穩健解決方案 retrieve real-time performance data。其中一個 Cmdlet Get-Counter
提供了一種多功能且高效的方式來訪問這些信息。
Get-Counter
Cmdlet 使我們能夠從本地或遠端機器獲取性能計數器數據。為了監控 CPU 和 RAM 使用,我們可以使用特定的性能計數器路徑。
以下是基本語法:
powershellCopyGet-Counter -Counter "\CounterPath"
對於 CPU 使用,計數器路徑為 '\Processor(_Total)\% Processor Time'
,而對於 RAM 使用,計數器路徑為 '\Memory\Available MBytes'
。
PowerShell 使用 Get-Counter
查找 CPU 和內存使用的代碼示例
讓我們深入探討一個完整的工作代碼示例,展示如何使用 Get-Counter
來監控 CPU 和 RAM 使用情況:
powershellCopy# 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 使用情況:
powershellCopyGet-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 使用情況的訊息。
代碼輸出:
監控內存使用情況 (RAM):
powershellCopyGet-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
循環中被處理。對於每個接收到的計數器樣本,腳本提取表示可用字節的處理值,並將其存儲在變量 $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 類和屬性。
基本語法如下:
powershellCopyGet-WmiObject -Class WMI_Class | Select-Object Property1, Property2, ...
對於 CPU 使用,我們使用 Win32_Processor
類,而對於 RAM 或物理內存使用,則使用 Win32_OperatingSystem
類。
PowerShell 使用 Get-WmiObject
查找 CPU 和 RAM 使用的代碼示例
讓我們探索一個完整的工作代碼示例,展示如何使用 Get-WmiObject
來監控 CPU 和 RAM 使用情況:
powershellCopy# 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 使用情況:
powershellCopy$cpuObject = Get-WmiObject -Class Win32_Processor
$cpuLoadPercentage = $cpuObject.LoadPercentage
Write-Host "CPU Load Percentage: $cpuLoadPercentage"
在這裡,腳本首先利用 Get-WmiObject
從 Win32_Processor
類查詢信息,其中包含有關系統處理器的詳細信息。獲得的信息存儲在變量 $cpuObject
中。
隨後,腳本從 $cpuObject
中提取 LoadPercentage
屬性,表示當前的 CPU 負載百分比。這個值然後存儲在變量 $cpuLoadPercentage
中。
最後,使用 Write-Host
在控制台上打印 CPU 負載百分比的訊息。
代碼輸出:
監控內存使用情況 (RAM):
powershellCopy$ramObject = Get-WmiObject -Class Win32_OperatingSystem
$ramUsageGB = [math]::Round(($ramObject.TotalVisibleMemorySize - $ramObject.FreePhysicalMemory) / 1GB, 2)
Write-Host "Available RAM: ${ramUsageGB}GB"
在 RAM 監控部分,腳本使用 Get-WmiObject
從 Win32_OperatingSystem
類檢索信息,該類包含與操作系統相關的各種屬性,包括內存相關的詳細信息。獲得的信息存儲在變量 $ramObject
中。
接下來,腳本透過從總物理內存或總可見內存大小 (TotalVisibleMemorySize
) 中減去可用的物理內存 (FreePhysicalMemory
) 來計算可用 RAM(以千兆字節為單位)。結果然後使用 [math]::Round
四捨五入到小數點後兩位,以確保輸出更整潔。
可用 RAM 值以千兆字節存儲在變量 $ramUsageGB
中。最後,使用 Write-Host
在控制台上打印可用 RAM 的訊息。
代碼輸出:
這些使用 Get-WmiObject
Cmdlet 獲得的信息為系統性能提供了寶貴的洞察,使得用戶能夠有效監控資源利用情況並做出明智的系統優化決策。該腳本的簡單性和清晰性使其成為管理員和用戶的多功能工具。
如何使用 PowerShell 查找 CPU 和 RAM 使用情況,使用 Get-Process
作為我們探索如何使用 PowerShell 監控系統性能的一部分,我們現在將專注於 Get-Process
Cmdlet。與 Get-Counter
和 Get-WmiObject
不同,Get-Process
提供有關本地計算機上運行的過程的信息,使我們能夠提取 CPU 和內存百分比的細節。
Get-Process
Cmdlet 獲取有關當前正在運行的進程的信息 currently running processes,無論是在本地還是遠端計算機。為了監控 CPU 和 RAM 使用,我們將從輸出中過濾並提取相關信息。
基本語法如下:
powershellCopyGet-Process -Name "ProcessName" | Select-Object Property1, Property2, ...
對於 CPU 使用,我們將關注 CPU
屬性,而對於 RAM 使用,我們將關注 WorkingSet
屬性。
PowerShell 使用 Get-Process
查找 CPU 和 RAM 使用的代碼示例
讓我們探索一個完整的工作代碼示例,展示如何使用 Get-Process
來監控 CPU 和 RAM 使用情況:
powershellCopy# 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 使用情況:
powershellCopy$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 個進程。生成的進程被存儲在變量 $cpuProcesses
中。
一個 ForEach
循環被用來遍歷 $cpuProcesses
中的每個進程對象。對於每個進程,腳本提取進程名稱 (ProcessName
) 和 CPU 使用情況 (CPU
)。
這些信息隨後通過 Write-Host
在控制台上顯示,呈現進程名稱以及其相應的 CPU 使用百分比。
代碼輸出:
監控內存使用情況 (RAM):
powershellCopy$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 個運行的進程。生成的進程被存儲在變量 $ramProcesses
中。
ForEach
循環遍歷 $ramProcesses
中的每個進程。對於每個進程,腳本提取進程名稱並計算以兆字節為單位的 RAM 使用情況。
計算包括將工作集大小除以 1 兆字節,並使用 [math]::Round
將結果四捨五入到小數點後兩位。然後,將這些信息通過 Write-Host
在控制台上顯示,呈現進程名稱以及其相應的 RAM 使用情況(以兆字節為單位)。
代碼輸出:
該腳本提供了一種動態的方法來監控 CPU 和內存使用,重點集中在資源消耗最大的進程上。通過利用 Get-Process
的能力,管理員和用戶可以洞察系統中資源密集型活動的情況。
結論
監控 CPU 和 RAM 使用對於維護健康和響應迅速的計算環境至關重要。PowerShell 及其豐富的 Cmdlet 集合提供了強大的工具,如 Get-Counter
、Get-WmiObject
和 Get-Process
來簡化這一過程。
無論您是偏好即時更新、詳細的 WMI 類信息,或是單個進程的洞察,PowerShell 都提供靈活的解決方案以滿足多樣的監控需求。通過將這些技術納入您的系統管理工具包,您可以輕鬆隨時瞭解 CPU 和 RAM 使用情況,實現及時干預和主動系統優化。