Get-Process
Ruft die Prozesse ab, die auf dem lokalen Computer oder einem Remotecomputer ausgeführt werden.
Syntax
Name (Standard)
Get-Process
[[-Name] <String[]>]
[-ComputerName <String[]>]
[-Module]
[-FileVersionInfo]
[<CommonParameters>]
NameWithUserName
Get-Process
[[-Name] <String[]>]
[-IncludeUserName]
[<CommonParameters>]
IdWithUserName
Get-Process
-Id <Int32[]>
[-IncludeUserName]
[<CommonParameters>]
Id
Get-Process
-Id <Int32[]>
[-ComputerName <String[]>]
[-Module]
[-FileVersionInfo]
[<CommonParameters>]
InputObjectWithUserName
Get-Process
-InputObject <Process[]>
[-IncludeUserName]
[<CommonParameters>]
InputObject
Get-Process
-InputObject <Process[]>
[-ComputerName <String[]>]
[-Module]
[-FileVersionInfo]
[<CommonParameters>]
Beschreibung
Das Cmdlet Get-Process ruft die Prozesse auf einem lokalen oder Remotecomputer ab.
Ohne Parameter ruft dieses Cmdlet alle Prozesse auf dem lokalen Computer ab. Sie können einen bestimmten Prozess auch durch Prozessname oder Prozess-ID (PID) angeben oder ein System.Diagnostics.Process-Objekt an dieses Cmdlet weiterleiten.
Standardmäßig gibt dieses Cmdlet ein Process-Objekt zurück, das detaillierte Informationen zum Prozess enthält und Methoden unterstützt, mit denen Sie es steuern können. Mit Parametern können Sie den Typ der von diesem Cmdlet zurückgegebenen Informationen ändern.
- Modul: Abrufen von Informationen für jedes modul, das in den Prozess geladen wurde.
- FileVersionInfo: Abrufen von Dateiversionsinformationen für das Hauptmodul des Prozesses.
Hinweis
Ein Modul ist eine ausführbare Datei oder eine DLL (Dynamic Link Library), die in einen Prozess geladen wurde. Ein Prozess verfügt über ein oder mehrere Module. Das Hauptmodul ist das Modul, das zum ersten Starten des Prozesses verwendet wird. Weitere Informationen finden Sie unter ProcessModule Class.
Beispiele
Beispiel 1: Abrufen einer Liste aller ausgeführten Prozesse auf dem lokalen Computer
Get-Process
Dieser Befehl ruft eine Liste aller ausgeführten Prozesse auf dem lokalen Computer ab. Eine Definition jeder Anzeigespalte finden Sie im Abschnitt "NOTIZEN ".
Um alle Eigenschaften eines Process-Objekts anzuzeigen, verwenden Sie Get-Process | Get-Member. Standardmäßig zeigt PowerShell bestimmte Eigenschaftswerte mithilfe von Einheiten wie Kilobyte (K) und Megabyte (M) an. Die tatsächlichen Werte, wenn mit dem Memberzugriffsoperator (.) zugegriffen wird, befinden sich in Byte.
Beispiel 2: Anzeigen detaillierter Informationen zu einem oder mehreren Prozessen
Get-Process winword, explorer | Format-List *
Diese Pipeline zeigt detaillierte Informationen zu den winword Und explorer Prozessen auf dem Computer an. Er verwendet den parameter Name, um die Prozesse anzugeben, aber der optionale Parametername wird weggelassen. Der Pipelineoperator (|) pipes Process-Objekte an das Format-List Cmdlet, das alle verfügbaren Eigenschaften (*) und deren Werte für jedes Objekt anzeigt.
Sie können die Prozesse auch anhand ihrer Prozess-IDs identifizieren. Beispiel: Get-Process -Id 664, 2060.
Beispiel 3: Abrufen aller Prozesse, deren Arbeitsset größer als eine festgelegte Größe ist
Get-Process | Where-Object { $_.WorkingSet -gt 20971520 }
Get-Process | Where-Object WorkingSet -GT 20MB
Das Get-Process Cmdlet gibt die ausgeführten Prozesse zurück. Die Ausgabe wird an das Where-Object Cmdlet weitergeleitet, das die Objekte mit einem WorkingSet-Wert größer als 20.971.520 Bytes auswählt.
Im ersten Beispiel wird ein Scriptblock verwendet, Where-Object um die WorkingSet-Eigenschaft jedes Process-Objekts zu vergleichen. Im zweiten Beispiel verwendet das Where-Object Cmdlet die vereinfachte Syntax, um die WorkingSet-Eigenschaft zu vergleichen. In diesem Fall -GT handelt es sich um einen Parameter, nicht um einen Vergleichsoperator. Im zweiten Beispiel wird auch ein numerisches Literalsuffix als präzise Alternative zu 20971520. In PowerShell MB stellt ein Mebibyte(MiB)-Multiplizierer dar.
20MB entspricht 20.971.520 Bytes.
Beispiel 4: Anzeigen von Prozessen auf dem Computer in Gruppen basierend auf Priorität
$processes = Get-Process
$processes | Sort-Object { $_.PriorityClass } | Format-Table -View Priority
Diese Befehle zeigen Prozesse auf dem Computer basierend auf ihrer Prioritätsklasse in Gruppen an. Der erste Befehl ruft alle Prozesse auf dem Computer ab und speichert sie in der $processes Variablen.
Mit dem zweiten Befehl werden die in der $processes Variablen gespeicherten Process-Objekte an das Sort-Object Cmdlet und dann an das Format-Table Cmdlet weitergeleitet, das die Prozesse mithilfe der Prioritätsansicht formatiert.
Die Prioritätsansicht und andere Ansichten werden in den .ps1xml Formatdateien im PowerShell-Startverzeichnis ($PSHOME) definiert.
Beispiel 5: Hinzufügen einer Eigenschaft zur standardmäßigen Ausgabeanzeige "Get-Process"
Get-Process -Name powershell | Format-Table -Property @(
'Handles'
@{ Name = 'NPM(K)'; Expression = { [int] ($_.NPM / 1KB) } }
@{ Name = 'PM(K)'; Expression = { [int] ($_.PM / 1KB) } }
@{ Name = 'WS(K)'; Expression = { [int] ($_.WS / 1KB) } }
@{ Name = 'CPU(s)'; Expression = { if ($_.CPU) { $_.CPU.ToString('N') } } }
'Id'
@{ Name = 'SI'; Expression = 'SessionId' }
'ProcessName'
'StartTime'
) -AutoSize
Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName StartTime
------- ------ ----- ----- ------ -- -- ----------- ---------
655 34 69424 83424 2.20 4240 1 powershell 4/14/2025 10:40:10 AM
572 36 68768 57260 7.41 4968 1 powershell 4/13/2025 3:33:50 PM
405 26 38144 30340 1.80 8776 1 powershell 4/14/2025 9:54:27 AM
In diesem Beispiel werden Prozesse vom lokalen Computer abgerufen und jedes Process-Objekt an das Format-Table Cmdlet weitergeleitet.
Format-Table Erstellt die Standardausgabeanzeige eines Process -Objekts mithilfe einer Mischung aus Eigenschaftsnamen und berechneten Eigenschaften neu. Die Anzeige enthält eine zusätzliche StartTime-Eigenschaft , die in der Standardanzeige nicht vorhanden ist.
Beispiel 6: Abrufen von Versionsinformationen für einen Prozess
Get-Process -Name powershell -FileVersionInfo
ProductVersion FileVersion FileName
-------------- ----------- --------
10.0.19041.320 10.0.19041.32... C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
Dieser Befehl verwendet den Parameter FileVersionInfo , um Dateiversionsinformationen für das Hauptmodul des powershell Prozesses abzurufen. Das Hauptmodul ist die Datei, die zum Starten des Prozesses verwendet wird, was in diesem Fall der Fall ist powershell.exe.
Um diesen Befehl mit Prozessen zu verwenden, die Sie nicht auf Windows Vista und höheren Versionen von Windows besitzen, müssen Sie PowerShell mit erhöhten Benutzerrechten (Als Administrator ausführen) ausführen.
Beispiel 7: Abrufen von Modulen, die mit dem angegebenen Prozess geladen wurden
Get-Process -Name SQL* -Module
Dieser Befehl verwendet den Parameter Module , um die Module abzurufen, die von allen Prozessen mit einem Namen geladen werden, beginnend mit SQL.
Um diesen Befehl mit Prozessen zu verwenden, die Sie nicht auf Windows Vista und höheren Versionen von Windows besitzen, müssen Sie PowerShell mit erhöhten Benutzerrechten (Als Administrator ausführen) ausführen.
Beispiel 8: Suchen des Besitzers eines Prozesses
Get-Process -Name powershell -IncludeUserName
Handles WS(K) CPU(s) Id UserName ProcessName
------- ----- ------ -- -------- -----------
782 132080 2.08 2188 DOMAIN01\user01 powershell
Get-CimInstance -ClassName Win32_Process -Filter "name='powershell.exe'" |
Invoke-CimMethod -MethodName GetOwner
Domain ReturnValue User PSComputerName
------ ----------- ---- --------------
DOMAIN01 0 user01
Der erste Befehl zeigt, wie der Besitzer eines Prozesses abgerufen wird. Der parameter IncludeUserName erfordert erhöhte Benutzerrechte (Als Administrator ausführen). Die Ausgabe zeigt, dass der Besitzer DOMAIN01\user01 ist.
Die zweite Pipeline zeigt eine andere Möglichkeit, um den Besitzer eines Prozesses zu Get-CimInstance verwenden und Invoke-CimMethodzu erhalten. Die Win32_Process Klasse mit einem Filter ruft Prozesse ab powershell , und die aufgerufene GetOwner() Methode gibt Informationen zur Domäne und zum Benutzer des Prozesses zurück. Für diese Methode sind keine erhöhten Benutzerrechte erforderlich.
Beispiel 9: Verwenden einer automatischen Variablen zum Identifizieren des Prozesses, der die aktuelle Sitzung hosten soll
Get-Process -Name powershell
Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName
------- ------ ----- ----- ------ -- -- -----------
561 44 47564 40740 6.48 2604 1 powershell
642 40 72040 24372 23.53 3576 1 powershel
Get-Process -Id $PID
Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName
------- ------ ----- ----- ------ -- -- -----------
647 40 72464 30716 23.67 3576 1 powershell
Diese Befehle zeigen, wie Sie die $PID automatische Variable verwenden, um den Prozess zu identifizieren, der die aktuelle PowerShell-Sitzung hostet. Sie können diese Methode verwenden, um den Hostprozess von anderen powershell Prozessen zu unterscheiden, die Sie möglicherweise steuern möchten.
Der erste Befehl ruft alle powershell ausgeführten Prozesse ab. Der zweite Befehl ruft den Prozess ab, der powershell die aktuelle Sitzung hosten soll.
Beispiel 10: Alle Prozesse abrufen, die einen Hauptfenstertitel haben, und sie in einer Tabelle anzeigen
Get-Process |
Where-Object -Property MainWindowTitle |
Format-Table -Property Id, Name, MainWindowTitle -AutoSize
Diese Pipeline ruft alle Prozesse ab, die über einen Hauptfenstertitel verfügen, und zeigt sie in einer Tabelle mit der Prozess-ID und dem Namen an.
MainWindowTitle ist eine von vielen nützlichen Eigenschaften des Typs Diagnostics.Process-Objekt , der Get-Process zurückgegeben wird. Verwenden Sie Get-Process | Get-Memberzum Anzeigen aller Eigenschaften .
Parameter
-ComputerName
Gibt die Computer an, für die dieses Cmdlet Ausgeführte Prozesse abruft. Der Standardwert ist der lokale Computer.
Geben Sie den NetBIOS-Namen, eine IP-Adresse oder einen vollqualifizierten Domänennamen (Fully Qualified Domain Name, FQDN) eines oder mehrerer Computer an. Um den lokalen Computer anzugeben, verwenden Sie den Computernamen, einen Punkt (.) oder localhosteinen .
Dieser Parameter basiert nicht auf Windows PowerShell-Remoting. Sie können den Parameter "ComputerName " dieses Cmdlets verwenden, auch wenn Ihr Computer nicht für die Ausführung von Remotebefehlen konfiguriert ist.
Parametereigenschaften
| Typ: | String[] |
| Standardwert: | Local computer |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
| Aliase: | Cn |
Parametersätze
Name
| Position: | Named |
| Obligatorisch: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | True |
| Wert aus verbleibenden Argumenten: | False |
Id
| Position: | Named |
| Obligatorisch: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | True |
| Wert aus verbleibenden Argumenten: | False |
InputObject
| Position: | Named |
| Obligatorisch: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | True |
| Wert aus verbleibenden Argumenten: | False |
-FileVersionInfo
Gibt an, dass dieses Cmdlet die Dateiversionsinformationen für das Programm abruft, das in dem Prozess ausgeführt wird.
Unter Windows Vista und höheren Versionen von Windows müssen Sie PowerShell mit erhöhten Benutzerrechten (Als Administrator ausführen) ausführen, um diesen Parameter für Prozesse zu verwenden, die Sie nicht besitzen.
Sie können die Parameter FileVersionInfo und ComputerName nicht zusammen verwenden.
Verwenden Sie das cmdlet Invoke-Command, um Dateiversionsinformationen für einen Prozess auf einem Remotecomputer abzurufen.
Die Verwendung dieses Parameters entspricht dem Zugriff auf die MainModule.FileVersionInfo-Eigenschaft jedes Process-Objekts . Wenn Sie diesen Parameter verwenden, Get-Process wird ein FileVersionInfo-Objekt und kein Process-Objekt zurückgegeben. Sie können die ausgabe, die mit diesem Parameter erzeugt wird, nicht an ein Cmdlet weiterleiten, das ein Process-Objekt erwartet, z Stop-Process. B. .
Parametereigenschaften
| Typ: | SwitchParameter |
| Standardwert: | False |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
| Aliase: | FV, FVI |
Parametersätze
Name
| Position: | Named |
| Obligatorisch: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
Id
| Position: | Named |
| Obligatorisch: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
InputObject
| Position: | Named |
| Obligatorisch: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-Id
Gibt einen oder mehrere Prozesse anhand der Prozess-ID (PID) an. Sie können mehrere IDs angeben, die durch Kommas getrennt sind. Um die PID eines Prozesses abzurufen, verwenden Sie Get-Process. Um die PID der aktuellen PowerShell-Sitzung abzurufen, verwenden Sie $PID.
Parametereigenschaften
| Typ: | Int32[] |
| Standardwert: | None |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
| Aliase: | PID |
Parametersätze
IdWithUserName
| Position: | Named |
| Obligatorisch: | True |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | True |
| Wert aus verbleibenden Argumenten: | False |
Id
| Position: | Named |
| Obligatorisch: | True |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | True |
| Wert aus verbleibenden Argumenten: | False |
-IncludeUserName
Gibt an, dass dieser Befehl jedem zurückgegebenen Process -Objekt eine UserName -Eigenschaft hinzufügt.
Sie müssen PowerShell mit erhöhten Benutzerrechten (als Administrator ausführen) ausführen, um diesen Parameter zu verwenden.
Parametereigenschaften
| Typ: | SwitchParameter |
| Standardwert: | None |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
NameWithUserName
| Position: | Named |
| Obligatorisch: | True |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
IdWithUserName
| Position: | Named |
| Obligatorisch: | True |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
InputObjectWithUserName
| Position: | Named |
| Obligatorisch: | True |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-InputObject
Gibt ein oder mehrere Process-Objekte an. Verwenden Sie eine Variable, die die Objekte enthält, oder einen Befehl oder Ausdruck, der die Objekte abruft.
Parametereigenschaften
| Typ: | Process[] |
| Standardwert: | None |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
InputObjectWithUserName
| Position: | Named |
| Obligatorisch: | True |
| Wert aus Pipeline: | True |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
InputObject
| Position: | Named |
| Obligatorisch: | True |
| Wert aus Pipeline: | True |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-Module
Gibt an, dass dieses Cmdlet die Module abruft, die der Prozess geladen hat.
Unter Windows Vista und höheren Versionen von Windows müssen Sie PowerShell mit erhöhten Benutzerrechten (Als Administrator ausführen) ausführen, um diesen Parameter für Prozesse zu verwenden, die Sie nicht besitzen.
Verwenden Sie das Invoke-Command Cmdlet, um die Module abzurufen, die von einem Prozess auf einem Remotecomputer geladen wurden.
Die Verwendung dieses Parameters ist identisch mit dem Zugriff auf die Modules-Eigenschaft jedes Process-Objekts .
Wenn Sie diesen Parameter verwenden, Get-Process wird ein ProcessModule-Objekt und kein Process-Objekt zurückgegeben. Sie können die ausgabe, die mit diesem Parameter erzeugt wird, nicht an ein Cmdlet weiterleiten, das ein Process-Objekt erwartet, z Stop-Process. B. .
Wenn Sie die Parameter "Module" und " FileVersionInfo " zusammen verwenden, gibt dieses Cmdlet ein FileVersionInfo-Objekt mit Informationen zur Dateiversion aller Module zurück.
Parametereigenschaften
| Typ: | SwitchParameter |
| Standardwert: | False |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
Name
| Position: | Named |
| Obligatorisch: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
Id
| Position: | Named |
| Obligatorisch: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
InputObject
| Position: | Named |
| Obligatorisch: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-Name
Gibt einen oder mehrere Prozesse mit ihrem Prozessnamen an. Sie können mehrere Prozessnamen angeben, die durch Kommas getrennt sind, und Die Zeichen für die Verwendung von Wildcardzeichen verwenden. Die Verwendung des -Name Parameters ist optional.
Parametereigenschaften
| Typ: | String[] |
| Standardwert: | None |
| Unterstützt Platzhalter: | True |
| Nicht anzeigen: | False |
| Aliase: | ProcessName |
Parametersätze
Name
| Position: | 0 |
| Obligatorisch: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | True |
| Wert aus verbleibenden Argumenten: | False |
NameWithUserName
| Position: | 0 |
| Obligatorisch: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | True |
| Wert aus verbleibenden Argumenten: | False |
CommonParameters
Dieses Cmdlet unterstützt die allgemeinen Parameter -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction und -WarningVariable. Weitere Informationen findest du unter about_CommonParameters.
Eingaben
Process
Sie können Process-Objekte an dieses Cmdlet weiterleiten.
Ausgaben
Process
Standardmäßig gibt dieses Cmdlet ein System.Diagnostics.Process-Objekt zurück.
FileVersionInfo
Wenn Sie den Parameter FileVersionInfo verwenden, gibt dieses Cmdlet ein System.Diagnostics.FileVersionInfo -Objekt zurück.
ProcessModule
Wenn Sie den Parameter Module verwenden, ohne den FileVersionInfo-Parameter , gibt dieses Cmdlet ein System.Diagnostics.ProcessModule-Objekt zurück.
Hinweise
Windows PowerShell enthält die folgenden Aliase für Get-Process:
gpsps
Auf Computern mit 64-Bit-Windows ruft die 64-Bit-Version von PowerShell das Hauptmodul und die 64-Bit-Prozessmodule ab. Die 32-Bit-Version von PowerShell erhält nur 32-Bit-Prozessmodule.
Warnung
Wenn Sie Get-Process einen 64-Bit-Prozess in der 32-Bit-Version von PowerShell abrufen, sind $nullEigenschaften wie Path das MainModule zurückgegebene Process-Objekt . Sie müssen entweder die 64-Bit-Version von PowerShell oder die Win32_Process Klasse verwenden.
Verwenden Sie das Cmdlet Invoke-Command, um Prozessinformationen von einem Remotecomputer abzurufen. Weitere Informationen finden Sie unter Invoke-Command.
Sie können die Windows-Verwaltungsinstrumentation (WMI) Win32_Process Klasse in PowerShell als Alternative zu Get-Processverwenden. Weitere Informationen finden Sie unter:
Die Standardanzeige eines Process-Objekts ist eine Tabellenansicht, die die folgenden Spalten enthält.
- Handles: Die Anzahl der Handles, die der Prozess geöffnet hat.
- NPM(K): Die Menge des nicht ausgelagerten Speichers, den der Prozess verwendet, in Kilobyte.
- PM(K): Die Menge des auslagerbaren Speichers, den der Prozess verwendet, in Kilobyte.
- WS(K): Die Größe des Arbeitsspeichers des Prozesses, in Kilobytes. Der Arbeitssatz besteht aus Speicherseiten, auf die zuvor vom Prozess verwiesen wurde.
- CPU(n): Die Prozessorzeit, die der Prozess auf allen Prozessoren verwendet hat, in Sekunden.
- ID: Die Prozess-ID (PID) des Prozesses.
- SI: Die Sitzungs-ID des Prozesses.
- ProcessName: Der Name des Prozesses.
Sie können die integrierten alternativen Ansichten für Prozessobjekte verwenden, die für Format-TableProzessobjekte verfügbar sind, z. B. StartTime und Priority. Sie können auch eigene Ansichten entwerfen.
Eine Beschreibung aller verfügbaren Process-Objektmember finden Sie unter "Process Properties" und "Process Methods".