So finden Sie die CPU- und RAM-Auslastung mit PowerShell

  1. So finden Sie die CPU- und RAM-Nutzung mit PowerShell über Get-Counter
  2. So finden Sie die CPU- und RAM-Nutzung mit PowerShell über Get-WmiObject
  3. So finden Sie die CPU- und RAM-Nutzung mit PowerShell über Get-Process
  4. Fazit
So finden Sie die CPU- und RAM-Auslastung mit PowerShell

Mit dem Fortschritt der Technologie wird die Notwendigkeit einer effizienten Systemüberwachung zunehmend entscheidend. Windows-Administratoren und -Benutzer suchen oft nach schnellen und effektiven Möglichkeiten, die CPU- und RAM-Nutzung für eine optimale Systemleistung ihrer Windows-Rechner zu bewerten.

In diesem Artikel werden wir die Möglichkeiten von PowerShell erkunden, einer vielseitigen Skriptsprache in der Windows-Umgebung, und herausfinden, wie sie verwendet werden kann, um die CPU- und RAM-Nutzung nahtlos zu ermitteln und zu überwachen.

Durch die Nutzung der Möglichkeiten von PowerShell können Benutzer Einblicke in die Speichernutzung ihres Systems in Echtzeit gewinnen, was sie in die Lage versetzt, informierte Entscheidungen zu treffen und ein reibungsloses Computing-Erlebnis zu gewährleisten.

So finden Sie die CPU- und RAM-Nutzung mit PowerShell über Get-Counter

PowerShell bietet mit seinen leistungsstarken Cmdlets eine robuste Lösung, um Echtzeit-Leistungsdaten abzurufen. Ein solches Cmdlet, Get-Counter, bietet eine vielseitige und effiziente Möglichkeit, auf diese Informationen zuzugreifen.

Das Cmdlet Get-Counter ermöglicht es uns, Leistungszählerdaten von lokalen oder entfernten Maschinen abzurufen. Um die CPU- und RAM-Nutzung zu überwachen, können wir spezifische Leistungszählerpfade verwenden.

Hier ist die grundlegende Syntax:

Get-Counter -Counter "\CounterPath"

Für die CPU-Nutzung ist der Zählerpfad '\Processor(_Total)\% Processor Time', und für die RAM-Nutzung ist es '\Memory\Available MBytes'.

PowerShell findet die CPU- und Speicherauslastung mit Get-Counter Codebeispiel

Lassen Sie uns in ein vollständiges funktionierendes Codebeispiel eintauchen, das zeigt, wie man Get-Counter verwendet, um sowohl die CPU- als auch die RAM-Nutzung zu überwachen:

# 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"
}

Lassen Sie uns jeden Abschnitt des Codes aufschlüsseln, um dessen Funktionalität zu verstehen.

Überwachung der CPU-Nutzung:

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

Im ersten Teil verwenden wir Get-Counter, um Echtzeitdaten über den Prozentsatz der gesamten Prozessorzeit abzurufen, die genutzt wird. Der angegebene Zählerpfad, '\Processor(_Total)\% Processor Time', zielt auf die gesamte CPU-Nutzung über alle Kerne ab.

Der Parameter -Continuous sorgt dafür, dass der Befehl kontinuierlich läuft, live Updates liefert und nur stoppt, wenn CTRL+C gedrückt wird.

Die Ausgabe von Get-Counter wird dann durch eine ForEach-Object-Schleife weiterverarbeitet. Für jede empfangene Zählerprobe extrahiert das Skript den verarbeiteten Wert (CookedValue), der den aktuellen Prozentsatz der CPU-Nutzung darstellt.

Dieser Wert wird in der Variablen $cpuUsage gespeichert, und eine Nachricht, die die aktuelle CPU-Nutzung anzeigt, wird mit der PowerShell-Funktion Write-Host in die Konsole ausgegeben.

Codeausgabe:

Powershell Speicherprozentsatz

Überwachung der Speichernutzung (RAM):

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

Der zweite Teil des Skripts konzentriert sich auf die Überwachung des Prozentsatzes des Speichers. Ähnlich wie im CPU-Abschnitt verwenden wir Get-Counter mit dem Zählerpfad '\Memory\Available MBytes', um kontinuierlich Daten über den verfügbaren Speicher in Megabyte abzurufen.

Der Parameter -Continuous sorgt für eine fortlaufende Überwachung.

Wieder wird die Ausgabe in einer ForEach-Object-Schleife verarbeitet. Für jede empfangene Zählerprobe extrahiert das Skript den verarbeiteten Wert, der verfügbare Bytes im RAM darstellt, und speichert diesen in der Variablen $ramUsage.

Der letzte Schritt besteht darin, die Informationen über den verfügbaren RAM in der Konsole mit Write-Host anzuzeigen.

Codeausgabe:

PowerShell-Speicherverbrauch abrufen

Diese Echtzeitanzeige von Informationen ist für Systemadministratoren und Benutzer von unschätzbarem Wert, da sie ihnen ermöglicht, Leistungsprobleme umgehend zu erkennen und zu beheben. Get-Counter vereinfacht den Prozess der Überwachung der CPU- und RAM-Nutzung und macht es zu einem unverzichtbaren Werkzeug im PowerShell-Arsenal.

So finden Sie die CPU- und RAM-Nutzung mit PowerShell über Get-WmiObject

Neben dem Cmdlet Get-Counter bietet PowerShell ein weiteres leistungsstarkes Tool, Get-WmiObject, um Systeminformationen zu sammeln, einschließlich CPU- und RAM-Nutzung.

Das Get-WmiObject Cmdlet ermöglicht es uns, auf Windows Management Instrumentation (WMI)-Klassen zuzugreifen, die eine Fülle von Informationen über das System bereitstellen. Um die CPU- und physische Speicherauslastung zu überwachen, werden spezifische WMI-Klassen und -Eigenschaften abgefragt.

Die grundlegende Syntax lautet wie folgt:

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

Für die CPU-Nutzung verwenden wir die Klasse Win32_Processor, und für die RAM- oder physische Speicherauslastung verwenden wir die Klasse Win32_OperatingSystem.

PowerShell findet die CPU- und RAM-Nutzung mit Get-WmiObject Codebeispiel

Lassen Sie uns ein vollständiges funktionierendes Codebeispiel erkunden, das zeigt, wie man Get-WmiObject verwendet, um sowohl die CPU- als auch die RAM-Nutzung zu überwachen:

# 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"

Lassen Sie uns jeden Abschnitt des PowerShell-Skripts oben aufschlüsseln, um dessen Funktionalität zu verstehen.

Überwachung der CPU-Nutzung:

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

Hier verwendet das Skript zunächst Get-WmiObject, um Informationen aus der Klasse Win32_Processor abzufragen, die Details über den Prozessor des Systems enthält. Die erhaltenen Informationen werden in der Variablen $cpuObject gespeichert.

Anschließend extrahiert das Skript die Eigenschaft LoadPercentage aus $cpuObject, die den aktuellen Prozentsatz der CPU-Auslastung darstellt. Dieser Wert wird dann in der Variablen $cpuLoadPercentage gespeichert.

Schließlich wird eine Nachricht, die den CPU-Auslastungsprozentsatz anzeigt, mit Write-Host in der Konsole ausgegeben.

Codeausgabe:

PowerShell GesamtSpeicherverbrauch

Überwachung der Speichernutzung (RAM):

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

Im Abschnitt zur RAM-Überwachung verwendet das Skript Get-WmiObject, um Informationen aus der Klasse Win32_OperatingSystem abzurufen, die verschiedene Eigenschaften, die mit dem Betriebssystem in Zusammenhang stehen, einschließlich speicherbezogener Details enthält. Die erlangten Informationen werden in der Variablen $ramObject gespeichert.

Anschließend berechnet das Skript den verfügbaren RAM in Gigabyte, indem es den freien physischen Speicher (FreePhysicalMemory) von der gesamten physischen Speicherkapazität oder der gesamten sichtbaren Speicherkapazität (TotalVisibleMemorySize) abzieht. Das Ergebnis wird dann auf zwei Dezimalstellen gerundet, um eine klarere Ausgabe zu gewährleisten.

Der verfügbare RAM-Wert in Gigabyte wird in der Variablen $ramUsageGB gespeichert. Schließlich wird eine Nachricht, die den verfügbaren RAM anzeigt, mit Write-Host in der Konsole ausgegeben.

Codeausgabe:

powershell freien Speicher

Diese Informationen, die mit dem Cmdlet Get-WmiObject abgerufen werden, liefern wertvolle Einblicke in die Systemleistung und ermöglichen es den Benutzern, die Ressourcennutzung effektiv zu überwachen und informierte Entscheidungen zur Systemoptimierung zu treffen. Die Einfachheit und Klarheit des Skripts macht es zu einem vielseitigen Werkzeug für Administratoren und Benutzer.

So finden Sie die CPU- und RAM-Nutzung mit PowerShell über Get-Process

Im Rahmen unserer Erkundung der Systemleistungsüberwachung mit PowerShell werden wir uns nun auf das Cmdlet Get-Process konzentrieren. Im Gegensatz zu Get-Counter und Get-WmiObject liefert Get-Process Informationen über laufende Prozesse auf der lokalen Maschine, was es uns ermöglicht, die CPU- und Speicherauslastungsdetails zu extrahieren.

Das Cmdlet Get-Process holt Informationen über die derzeit laufenden Prozesse auf einem lokalen oder entfernten Computer ab. Um die CPU- und RAM-Nutzung zu überwachen, filtern und extrahieren wir relevante Informationen aus der Ausgabe.

Die grundlegende Syntax ist wie folgt:

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

Für die CPU-Nutzung konzentrieren wir uns auf die Eigenschaft CPU, und für die RAM-Nutzung auf die Eigenschaft WorkingSet.

PowerShell findet die CPU- und RAM-Nutzung mit Get-Process Codebeispiel

Lassen Sie uns ein vollständiges funktionierendes Codebeispiel erkunden, das zeigt, wie man Get-Process verwendet, um sowohl die CPU- als auch die RAM-Nutzung zu überwachen:

# 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"
}

Ähnlich wie in den vorherigen Beispielen ist dieses PowerShell-Skript auch in zwei Teile organisiert: einer, der sich auf die CPU-Nutzung konzentriert, und der andere, der sich mit der RAM-Nutzung befasst. Lassen Sie uns jeden Abschnitt des Codes aufschlüsseln.

Überwachung der CPU-Nutzung:

$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%"
}

Im ersten Codesegment beginnt das Skript, indem es Get-Process verwendet, um Informationen über alle laufenden Prozesse im System abzurufen. Die Ausgabe wird dann nach CPU-Nutzung in absteigender Reihenfolge mit Sort-Object sortiert.

Der Befehl Select-Object -First 5 stellt sicher, dass nur die 5 Prozesse mit der höchsten CPU-Nutzung berücksichtigt werden. Die resultierenden Prozesse werden in der Variablen $cpuProcesses gespeichert.

Eine ForEach-Schleife wird verwendet, um durch jedes Prozessobjekt in $cpuProcesses zu iterieren. Für jeden Prozess extrahiert das Skript den Prozessnamen (ProcessName) und die CPU-Nutzung (CPU).

Diese Informationen werden dann mit Write-Host in der Konsole ausgegeben, wobei der Name des Prozesses zusammen mit dem entsprechenden Prozentsatz der CPU-Nutzung angezeigt wird.

Codeausgabe:

PowerShell-Speicherprozent

Überwachung der Speichernutzung (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"
}

Im zweiten Codesegment wird ein ähnlicher Ansatz verfolgt. Wieder wird Get-Process verwendet, um Informationen über alle laufenden Prozesse zu sammeln.

Die Ausgabe wird dann nach RAM-Nutzung (WorkingSet) in absteigender Reihenfolge sortiert, und nur die 5 Prozesse mit der höchsten RAM-Nutzung werden ausgewählt. Die resultierenden Prozesse werden in der Variablen $ramProcesses gespeichert.

Eine ForEach-Schleife iteriert durch jeden Prozess in $ramProcesses. Für jeden Prozess extrahiert das Skript den Prozessnamen und berechnet die RAM-Nutzung in Megabyte.

Die Berechnung umfasst die Division der Arbeitssatzgröße durch 1 Megabyte und das Runden des Ergebnisses auf zwei Dezimalstellen mit [math]::Round. Die Informationen werden dann mit Write-Host in der Konsole ausgegeben, wobei der Prozessname zusammen mit der entsprechenden RAM-Nutzung in Megabyte angezeigt wird.

Codeausgabe:

PowerShell-Speicherverbrauch

Dieses Skript bietet einen dynamischen Ansatz zur Überwachung der CPU- und Speicherauslastung, der sich auf die ressourcenintensivsten Prozesse konzentriert. Durch die Nutzung der Möglichkeiten von Get-Process können Administratoren und Benutzer Einblicke in ressourcenintensive Aktivitäten auf ihren Systemen gewinnen.

Fazit

Die Überwachung der CPU- und RAM-Nutzung ist entscheidend für die Aufrechterhaltung einer gesunden und reaktionsschnellen Computerumgebung. PowerShell, mit ihrem reichhaltigen Satz an Cmdlets, bietet leistungsstarke Tools wie Get-Counter, Get-WmiObject und Get-Process, um diesen Prozess zu rationalisieren.

Ob Sie Echtzeit-Updates, detaillierte WMI-Klasseninformationen oder Einblicke in einzelne Prozesse bevorzugen, PowerShell bietet flexible Lösungen, um vielfältigen Überwachungsbedürfnissen gerecht zu werden. Durch die Einbeziehung dieser Techniken in Ihre Systemmanagement-Werkzeugkiste können Sie mühelos über die CPU- und RAM-Nutzung informiert bleiben, was rechtzeitige Interventionen und proaktive Systemoptimierungen ermöglicht.

Genießen Sie unsere Tutorials? Abonnieren Sie DelftStack auf YouTube, um uns bei der Erstellung weiterer hochwertiger Videoanleitungen zu unterstützen. Abonnieren
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