PowerShell を使用して CPU と RAM の使用状況を調べる方法

  1. PowerShell を使用して Get-Counter で CPU と RAM の使用状況を見つける方法
  2. PowerShell を使用して Get-WmiObject で CPU と RAM の使用状況を見つける方法
  3. PowerShell を使用して Get-Process で CPU と RAM の使用状況を見つける方法
  4. 結論
PowerShell を使用して CPU と RAM の使用状況を調べる方法

技術が進歩するにつれて、効率的なシステム監視の必要性はますます重要になっています。Windows の管理者やユーザーは、Windows マシンでの最適なシステムパフォーマンスのために CPU と RAM の使用状況を迅速かつ効果的に評価する方法を求めることがよくあります。

この記事では、Windows 環境での多用途なスクリプト言語である PowerShell の力を探求し、CPU と RAM の使用状況をシームレスに見つけて監視する方法を発見します。

PowerShell の機能を活用することで、ユーザーはシステムのメモリ使用状況をリアルタイムで把握でき、情報に基づいた意思決定を行い、スムーズなコンピューティング体験を確保できます。

PowerShell を使用して Get-Counter で CPU と RAM の使用状況を見つける方法

PowerShell は、その強力なコマンドレットを使って、リアルタイムのパフォーマンスデータを取得するための頑健なソリューションを提供します。その中の一つのコマンドレットである Get-Counter は、この情報にアクセスするための多用途かつ効率的な方法を提供します。

Get-Counter コマンドレットを使用すると、ローカルまたはリモートのマシンからパフォーマンスカウンタデータを取得できます。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'は、すべてのコアにわたる GPU の全体的な使用状況を対象としています。

-Continuous パラメータは、コマンドが継続的に実行されることを保証し、CTRL+Cが押されるまで停止しません。

Get-Counter の出力は、その後、ForEach-Object ループを通じて渡されます。受信した各カウンタサンプルについて、スクリプトは現在の CPU 使用率を表す処理済みの値(CookedValue)を抽出します。

この値は変数 $cpuUsage に保存され、PowerShell 関数 Write-Host を使用して現在の CPU 使用量をコンソールに表示するメッセージが表示されます。

コードの出力:

PowerShell メモリ百分率

メモリ使用量(RAM)の監視:

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

スクリプトの 2 番目の部分は、メモリのパーセンテージの監視に焦点を当てています。CPU セクションと同様に、Get-Counter を使用してカウンタパス'\Memory\Available MBytes'でメガバイト単位の利用可能なメモリに関するデータを継続的に取得します。

-Continuous パラメータは、継続的な監視を保証します。

再び、出力は ForEach-Object ループで処理されます。受信した各カウンタサンプルのために、スクリプトは RAM の利用可能なバイトを表す処理済み値を抽出し、変数 $ramUsage に保存します。

最終的なステップでは、Write-Host を使用して、利用可能な RAM 情報をコンソールに表示します。

コードの出力:

メモリ使用量を取得する PowerShell

このリアルタイムの情報表示は、システム管理者やユーザーにとって非常に貴重であり、パフォーマンスの問題を迅速に特定し対処するのに役立ちます。Get-Counter は CPU と RAM の使用状況を監視するプロセスを簡素化し、PowerShell の武器の中で欠かせないツールとなっています。

PowerShell を使用して Get-WmiObject で CPU と RAM の使用状況を見つける方法

Get-Counter コマンドレットに加えて、PowerShell は CPU と RAM の使用状況を含むシステム情報を収集するためのもう一つの強力なツール、Get-WmiObject を提供しています。

Get-WmiObject コマンドレットでは、Windows 管理のための Instrumentation (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"

ここで、スクリプトはまず、システムプロセッサに関する詳細を含む Win32_Processor クラスから情報をクエリするために Get-WmiObject を利用します。取得した情報は変数 $cpuObject に保存されます。

続いて、スクリプトは $cpuObject から LoadPercentage プロパティを抽出し、現在の CPU 負荷のパーセンテージを表します。この値はその後、変数 $cpuLoadPercentage に保存されます。

最後に、CPU 負荷のパーセンテージを表示するメッセージが Write-Host を使用してコンソールに表示されます。

コードの出力:

PowerShell の総メモリ使用量

メモリ使用量(RAM)の監視:

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

RAM 監視セクションでは、スクリプトは Get-WmiObject を使用して OS に関連するさまざまなプロパティを含む Win32_OperatingSystem クラスから情報を取得します。取得した情報は変数 $ramObject に保存されます。

次に、スクリプトは、利用可能な RAM をギガバイト単位で計算します。これは、全物理メモリサイズ(TotalVisibleMemorySize)から空き物理メモリ(FreePhysicalMemory)を引くことによって行われ、出力をきれいにするために [math]::Round を使用して小数点以下 2 桁に丸めます。

ギガバイト単位の利用可能な RAM の値は変数 $ramUsageGB に保存されます。最後に、利用可能な RAM を表示するメッセージが Write-Host を使用してコンソールに表示されます。

コードの出力:

PowerShell の空きメモリ

この情報は、Get-WmiObject コマンドレットを使用して取得され、システムのパフォーマンスに関する貴重な洞察を提供し、ユーザーがリソースの利用状況を効果的に監視し、システムの最適化のための情報に基づいた意思決定を行うのに役立ちます。スクリプトのシンプルさと明確さは、管理者やユーザーにとって多用途のツールにします。

PowerShell を使用して Get-Process で CPU と RAM の使用状況を見つける方法

PowerShell を使用したシステムパフォーマンスの監視の探求の一環として、Get-Process コマンドレットに焦点を当てます。Get-CounterGet-WmiObject とは異なり、Get-Process はローカルマシン上で実行中のプロセスに関する情報を提供し、CPU とメモリのパーセンテージの詳細を抽出することを可能にします。

Get-Process コマンドレットは、現在実行中のプロセスに関する情報をローカルまたはリモートコンピュータから取得します。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 スクリプトも 2つのセクションに整理されています:一つは 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つのプロセスのみを考慮します。結果として得られたプロセスは変数 $cpuProcesses に保存されます。

ForEach ループを使用して、$cpuProcesses 内の各プロセスオブジェクトを反復処理します。各プロセスについて、スクリプトはプロセス名(ProcessName)と CPU 使用状況(CPU)を抽出します。

この情報は、その後、Write-Host を使用してコンソールに表示され、プロセス名とその対応する CPU 使用率が表示されます。

コードの出力:

パワーシェルメモリパーセンテージ

メモリ使用量(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"
}

2 番目のコードセクションでは、同様のアプローチが取られます。再び、Get-Process を使用してすべての実行中プロセスに関する情報を収集します。

出力は次に RAM 使用量(WorkingSet)に基づいて降順にソートされ、上位 5つの実行中のプロセスのみが選択されます。結果として得られたプロセスは変数 $ramProcesses に保存されます。

ForEach ループは、$ramProcesses 内の各プロセスを反復処理します。各プロセスについて、スクリプトはプロセス名を抽出し、RAM 使用量をメガバイトで計算します。

計算は、作業セットサイズを 1 メガバイトで割り、出力をきれいにするために [math]::Round を使用して結果を小数点以下 2 桁に丸めることによって行われます。この情報は、その後、Write-Host を使用してコンソールに表示され、プロセス名とその対応する RAM 使用量がメガバイト単位で表示されます。

コードの出力:

PowerShell のメモリ使用量

このスクリプトは、CPU とメモリの使用状況を監視するダイナミックなアプローチを提供し、リソースを多く消費するプロセスに焦点を当てています。Get-Process の機能を活用することによって、管理者やユーザーはシステム上のリソース集約的なアクティビティを洞察することができます。

結論

CPU と RAM の使用状況を監視することは、健康で応答性の高いコンピューティング環境を維持するために不可欠です。PowerShell は、その豊富なコマンドレットのセットを持っており、Get-CounterGet-WmiObjectGet-Process などの強力なツールを提供して、このプロセスを簡素化します。

リアルタイムの更新、詳細な WMI クラス情報、または個々のプロセスに関する洞察のいずれを好む場合でも、PowerShell は多様な監視ニーズに対応する柔軟なソリューションを提供します。これらの手法をシステム管理ツールキットに組み込むことによって、CPU と RAM の使用状況について容易に情報を保持し、迅速な介入と積極的なシステム最適化を可能にします。

チュートリアルを楽しんでいますか? <a href="https://www.youtube.com/@delftstack/?sub_confirmation=1" style="color: #a94442; font-weight: bold; text-decoration: underline;">DelftStackをチャンネル登録</a> して、高品質な動画ガイドをさらに制作するためのサポートをお願いします。 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