So finden Sie die CPU- und RAM-Auslastung mit PowerShell
-
So finden Sie die CPU- und RAM-Nutzung mit PowerShell über
Get-Counter
-
So finden Sie die CPU- und RAM-Nutzung mit PowerShell über
Get-WmiObject
-
So finden Sie die CPU- und RAM-Nutzung mit PowerShell über
Get-Process
- Fazit

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:
Ü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:
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:
Ü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:
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:
Ü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:
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.