Wie man eine Liste der laufenden Prozesse in PowerShell erhält

  1. Verwenden Sie das Cmdlet Get-Process, um eine Liste von laufenden Prozessen in PowerShell anzuzeigen
  2. Fazit
Wie man eine Liste der laufenden Prozesse in PowerShell erhält

Dieser Artikel beschäftigt sich mit der Nutzung von PowerShell zur Prozessüberwachung und hebt das Cmdlet Get-Process hervor. Das Cmdlet Get-Process, ein fester Bestandteil des Prozessmanagements, bietet einen umfassenden Überblick über laufende Prozesse auf einer Windows-Maschine und zeigt kritische Informationen wie Prozess-IDs, Namen, Speichernutzung und CPU-Verbrauch an.

Der Artikel entfaltet systematisch die Syntax und Parameter des Cmdlets und kommt sowohl allgemeinen als auch spezifischen Prozessanfragen entgegen.

Verwenden Sie das Cmdlet Get-Process, um eine Liste von laufenden Prozessen in PowerShell anzuzeigen

Es gibt mehr als 200 Cmdlets in der PowerShell-Umgebung. Jedes Cmdlet ist für eine spezifische Funktion verantwortlich.

Das Get-Process ist eines der häufig verwendeten Cmdlets, das dabei hilft, die Liste der laufenden Prozesse auf der Windows-Maschine abzurufen.

Dieses Cmdlet gibt nützliche Informationen zu jedem Prozess zurück, wie Prozess-ID, Name, Speichernutzung usw. Außerdem zeigt es einen Snapshot der auf dem System laufenden Prozesse.

Syntax:

Get-Process [[-ProcessName] string[]] [-NameOfTheComputer string[]]
[-FileVersionInfo] [-Module] [CommonParameters]

Get-Process -processID Int32[] [-ComputerName string[]]
[-FileVersionInfo] [-Module] [CommonParameters]

Get-Process -ProcessInputObject Process[] [-ComputerName string[]]
[-FileVersionInfo] [-Module] [CommonParameters]

Parameter:

  • ProcessName string[]: Gibt ein Array von Prozessnamen an, die abgerufen werden sollen. Dieser Parameter akzeptiert Wildcard-Zeichen zur Mustererkennung. Wenn dieser Parameter weggelassen wird, ruft Get-Process alle Prozesse ab.
  • ProcessId Int32[]: Gibt die Prozess-IDs der abzurufenden Prozesse an. Dieser Parameter ermöglicht es Ihnen, gezielt bestimmte Prozesse direkt anzusprechen.
  • InputObject Process[]: Gibt ein Array von Prozessobjekten an. Dieser Parameter erlaubt es Ihnen, Prozessobjekte an Get-Process weiterzuleiten.
  • NameOfTheComputer string[]: Gibt die Namen der Computer an, auf denen der Befehl ausgeführt werden soll. Wenn dieser Parameter weggelassen wird, ruft Get-Process Prozesse vom lokalen Computer ab.
  • FileVersionInfo: Fügt den Prozessobjekten Informationen zur Dateiversion hinzu. Dies ist nützlich, wenn Sie Details zur ausführbaren Datei des Prozesses benötigen, wie Version, Produktname usw.
  • Module: Beinhaltet die Module (DLLs und ausführbare Dateien), die von jedem Prozess geladen werden. Dies ist hilfreich für eine detailliertere Analyse, wie das Überprüfen, welche DLLs von einem Prozess geladen werden.
  • [CommonParameters]: Dies sind die Parameter, die von allen Cmdlets unterstützt werden, wie -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutVariable, -OutBuffer und -PipelineVariable.

Die Parameter sind optional für das Cmdlet Get-Process, und Sie können diese Parameter nach Ihren Anforderungen verwenden.

Alle laufenden Prozesse anzeigen

Wir können den Befehl Get-Process direkt ohne Parameter verwenden. Er sollte alle zu diesem Zeitpunkt laufenden Prozesse anzeigen.

Außerdem kann das Alias gps anstelle des Befehls Get-Process verwendet werden.

Get-Process
gps

Ausgabe:

Alle laufenden Prozesse anzeigen

Bei der Ausführung von entweder Get-Process oder gps beginnt PowerShell eine systemweite Abfrage, um Informationen über alle aktiven Prozesse zu sammeln. Das Fehlen von Parametern in diesen Befehlen signalisiert PowerShell, keine Filter anzuwenden und Details für jeden Prozess abzurufen.

PowerShell sammelt dann ausführliche Daten über jeden laufenden Prozess. Diese Daten umfassen verschiedene Attribute, die den Zustand und die Eigenschaften dieser Prozesse beschreiben.

PowerShell formatiert sie zur Anzeige in einer Tabelle. Dieses tabellarische Format ist darauf ausgelegt, die Informationen klar und lesbar darzustellen.

Die Tabelle umfasst typischerweise mehrere wichtige Spalten:

  1. Id: Diese Spalte zeigt den Prozessidentifikator (PID), ein einzigartiges numerisches Etikett, das jedem Prozess zugewiesen ist. Der PID ist entscheidend für die eindeutige Identifizierung und Verwaltung spezifischer Prozesse.
  2. ProcessName: Dies ist der Name der ausführbaren Datei, die den Prozess initiiert hat. Er hilft dabei, den Prozess leicht zu erkennen, insbesondere bei bekannten Anwendungen.
  3. CPU(s): Hier sehen wir die Menge an CPU-Zeit, die der Prozess verbraucht hat. Diese wird in Sekunden gemessen und ist entscheidend für die Beurteilung, welche Prozesse erhebliche CPU-Ressourcen verwenden, was potenziell die Systemleistung beeinträchtigen kann.
  4. PM(K): Das steht für Paged Memory in Kilobyte. Es repräsentiert die Größe des Speichers, den der Prozess verwendet, der auf die Festplatte paginiert werden kann. Diese Kennzahl ist wichtig zur Überwachung der Speichernutzung von Prozessen, was entscheidend für die Leistungsoptimierung und das Ressourcenmanagement ist.

Informationen zu einem einzelnen Prozess abrufen

Wenn wir PowerShell verwenden, um Informationen über einen bestimmten Prozess abzurufen, haben wir ein paar Syntaxoptionen. Sowohl Get-Process -Name processName als auch Get-Process processName sind gültig und erzielen dasselbe Ergebnis, unterscheiden sich jedoch geringfügig in ihrer Syntaxstruktur.

Get-Process -Name typora

ODER

Get-Process typora

Wenn wir entweder Get-Process -Name typora oder Get-Process typora ausführen, filtert PowerShell die laufenden Prozesse und gibt spezifische Informationen für den Prozess mit dem Namen typora zurück. Dies ist insbesondere nützlich, wenn wir den genauen Namen des Prozesses kennen, an dem wir interessiert sind.

Intern durchsucht PowerShell die Liste aller Prozesse und vergleicht den Prozessnamen mit typora. Wenn der Prozess läuft, werden seine Details angezeigt.

Ausgabe:

Get-Process -Name

Informationen zu mehreren Prozessen abrufen

Wenn wir das Cmdlet Get-Process in PowerShell verwenden, um Informationen für mehrere Prozesse abzurufen, wie im Befehl Get-Process NotePad, Outlook, nutzen wir die Fähigkeit von PowerShell, mehrere Elemente gleichzeitig zu bearbeiten.

Get-Process NotePad, Outlook

Durch das Ausführen von Get-Process NotePad, Outlook weisen wir PowerShell an, Details für mehrere Prozesse gleichzeitig abzurufen, in diesem Fall NotePad und Outlook. Dieser Befehl ist nützlich, wenn wir mehrere spezifische Prozesse überwachen müssen.

PowerShell führt eine ähnliche Operation wie der Befehl für einen einzelnen Prozess aus, jedoch für jeden angegebenen Prozessnamen und zeigt alle Übereinstimmungen an.

Ausgabe:

Get-Process Mehrere

Außerdem können Sie Wildcards für den Processnamen verwenden.

Prozessobjekte mit den angegebenen Attributen abrufen

Wir können die Informationen zu Prozessobjekten für bestimmte Attribute anzeigen, wenn nötig. Lassen Sie uns nur die Process ID für den NotePad-Prozess abrufen.

(Get-Process NotePad).Id

Im Befehl (Get-Process NotePad).Id erhalten wir zunächst das Prozessobjekt für NotePad und greifen dann auf seine Id-Eigenschaft zu. Diese Technik ist nützlich, wenn wir nur an spezifischen Informationen zu einem Prozess interessiert sind, wie seiner Process ID.

Ausgabe:

Prozessobjekte mit den angegebenen Attributen abrufen

Außerdem können wir das Attribut der CPU-Zeit für den NotePad-Prozess abrufen, wie im Folgenden gezeigt.

(Get-Process NotePad).CPU

Ebenso ruft (Get-Process NotePad).CPU die CPU-Nutzungsinformationen für den NotePad-Prozess ab. Diese Befehle zeigen, wie wir spezifische Datenpunkte aus den Prozessobjekten extrahieren können.

Ausgabe:

prozesse cpu

Den Prozessbesitzer anzeigen

Die Standardausgabe des Befehls Get-Process zeigt nicht das Attribut ProcessOwner an. Dies kann jedoch eine wertvolle Information sein, wenn Sie einen bestimmten Prozess beenden möchten.

Wir können den Parameter -IncludeUserName verwenden, um das Attribut ProcessOwner in die Ausgabe aufzunehmen.

Get-Process -Name notepad -IncludeUserName

Der Befehl Get-Process -Name notepad -IncludeUserName erweitert das Standardverhalten von Get-Process, indem er den Benutzernamen des Prozessbesitzers in die Ausgabe aufnimmt. Der Parameter -IncludeUserName ist entscheidend, wenn wir identifizieren möchten, welcher Benutzer einen bestimmten Prozess ausführt, was in Multi-User-Umgebungen oder zur Fehlersuche kritisch sein kann.

Dieser Befehl verbessert unsere Sichtbarkeit auf die Prozesse, insbesondere in Bezug auf deren Eigentümer.

Ausgabe:

Get-Process IncludeUserName

Fazit

Diese umfassende Anleitung hat die Macht und Vielseitigkeit von PowerShell bei der Verwaltung und Überwachung von Systemprozessen beleuchtet. Wir sind durch die praktischen Anwendungen des Cmdlets Get-Process gereist, angefangen bei der Auflistung aller laufenden Prozesse bis hin zur Identifizierung spezifischer Prozesse und der Vertiefung in die Extraktion bestimmter Prozessattribute.

Der Artikel zeigte auch die Geschicklichkeit von PowerShell im Umgang mit mehreren Prozessen gleichzeitig und die Einfachheit der Integration benutzerzentrierter Informationen wie der Prozessbesitzerschaft.

Diese Integration des Cmdlets Get-Process unterstreicht die Robustheit und Anpassungsfähigkeit von PowerShell im Bereich des Prozessmanagements und bietet eine Vielzahl von Tools für Systemadministratoren, um Prozesse effektiv innerhalb einer Windows-Umgebung zu überwachen, zu analysieren und zu verwalten.

Genießen Sie unsere Tutorials? Abonnieren Sie DelftStack auf YouTube, um uns bei der Erstellung weiterer hochwertiger Videoanleitungen zu unterstützen. Abonnieren
Migel Hewage Nimesha avatar Migel Hewage Nimesha avatar

Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.