Share via


Get-Process

Ruft die Prozesse ab, die auf dem lokalen Computer ausgeführt werden.

Syntax

Get-Process
   [[-Name] <String[]>]
   [-Module]
   [-FileVersionInfo]
   [<CommonParameters>]
Get-Process
   [[-Name] <String[]>]
   -IncludeUserName
   [<CommonParameters>]
Get-Process
   -Id <Int32[]>
   [-Module]
   [-FileVersionInfo]
   [<CommonParameters>]
Get-Process
   -Id <Int32[]>
   -IncludeUserName
   [<CommonParameters>]
Get-Process
   -InputObject <Process[]>
   [-Module]
   [-FileVersionInfo]
   [<CommonParameters>]
Get-Process
   -InputObject <Process[]>
   -IncludeUserName
   [<CommonParameters>]

Beschreibung

Das Get-Process Cmdlet ruft die Prozesse auf einem lokalen oder Remotecomputer ab.

Ohne Parameter ruft dieses Cmdlet alle Prozesse auf dem lokalen Computer ab. Sie können auch einen bestimmten Prozess durch Prozessnamen oder Prozess-ID (PID) angeben oder ein Prozessobjekt über die Pipeline an dieses Cmdlet übergeben.

Standardmäßig gibt dieses Cmdlet ein Prozessobjekt zurück, das detaillierte Informationen zum Prozess enthält und Methoden unterstützt, mit denen Sie den Prozess starten und beenden können. Sie können auch die Parameter des Get-Process Cmdlets verwenden, um Dateiversionsinformationen für das Programm abzurufen, das im Prozess ausgeführt wird, und um die Module abzurufen, die der Prozess geladen hat.

Beispiele

Beispiel 1: Abrufen einer Liste aller aktiven Prozesse auf dem lokalen Computer

Get-Process

Mit diesem Befehl wird eine Liste aller aktiven Prozesse abgerufen, die auf dem lokalen Computer ausgeführt werden. Eine Definition der einzelnen Spalten finden Sie im Abschnitt Notizen .

Beispiel 2: Abrufen aller verfügbaren Daten zu einem oder mehreren Prozessen

Get-Process winword, explorer | Format-List *

Mit diesem Befehl werden alle verfügbaren Daten zum Winword- und zum Explorer-Prozess auf dem Computer abgerufen. Der Name-Parameter wird verwendet, um die Prozesse anzugeben, aber der optionale Parametername wird weggelassen. Der Pipelineoperator (|) übergibt die Daten an das Format-List Cmdlet, das alle verfügbaren Eigenschaften (*) der Winword- und Explorer Prozessobjekte anzeigt.

Sie können die Prozesse auch anhand ihrer Prozess-IDs angeben. Beispielsweise Get-Process -Id 664, 2060.

Beispiel 3: Abrufen aller Prozesse mit einem Arbeitssatz, der größer als eine angegebene Größe ist

Get-Process | Where-Object {$_.WorkingSet -gt 20000000}

Mit diesem Befehl werden alle Prozesse mit einem Arbeitssatz abgerufen, dessen Größe 20 MB übersteigt. Es verwendet das Get-Process Cmdlet, um alle ausgeführten Prozesse abzurufen. Der Pipelineoperator (|) übergibt die Prozessobjekte an das Where-Object Cmdlet, das nur das Objekt mit einem Wert größer als 20.000.000 Bytes für die WorkingSet-Eigenschaft auswählt.

WorkingSet ist eine von vielen Eigenschaften von Prozessobjekten. Um alle Eigenschaften anzuzeigen, geben Sie ein Get-Process | Get-Member. Standardmäßig werden die Werte aller Mengeneigenschaften in Bytes angegeben, auch wenn sie in der Standardanzeige in Kilobytes und Megabytes aufgeführt werden.

Beispiel 4: Auflisten von Prozessen auf dem Computer in Gruppen nach Priorität

$A = Get-Process
$A | Get-Process | Format-Table -View priority

Diese Befehle listen die Prozesse auf dem Computer in Gruppen basierend auf ihrer Prioritätsklasse auf. Der erste Befehl ruft alle Prozesse auf dem Computer ab und speichert sie dann in der $A Variablen.

Der zweite Befehl leitet das in der $A Variablen gespeicherte Process-Objekt an das Get-Process Cmdlet und dann an das Format-Table Cmdlet weiter, das die Prozesse mithilfe der Prioritätsansicht formatiert.

Die Prioritätsansicht und andere Ansichten werden in den Dateien im PS1XML-Format im PowerShell-Basisverzeichnis ($pshome) definiert.

Beispiel 5: Hinzufügen einer Eigenschaft zur Standardausgabeanzeige Get-Process

Get-Process pwsh | Format-Table `
    @{Label = "NPM(K)"; Expression = {[int]($_.NPM / 1024)}},
    @{Label = "PM(K)"; Expression = {[int]($_.PM / 1024)}},
    @{Label = "WS(K)"; Expression = {[int]($_.WS / 1024)}},
    @{Label = "VM(M)"; Expression = {[int]($_.VM / 1MB)}},
    @{Label = "CPU(s)"; Expression = {if ($_.CPU) {$_.CPU.ToString("N")}}},
    Id, MachineName, ProcessName -AutoSize

NPM(K) PM(K) WS(K) VM(M) CPU(s)   Id MachineName ProcessName
------ ----- ----- ----- ------   -- ----------- -----------
     6 23500 31340   142 1.70   1980 .           pwsh
     6 23500 31348   142 2.75   4016 .           pwsh
    27 54572 54520   576 5.52   4428 .           pwsh

In diesem Beispiel werden Prozesse vom lokalen Computer und einem Remotecomputer (S1) abgerufen. Die abgerufenen Prozesse werden an den Format-Table Befehl weitergeleitet, der der Standardausgabeanzeige Get-Process die MachineName-Eigenschaft hinzufügt.

Beispiel 6: Abrufen von Versionsinformationen für einen Prozess

Get-Process pwsh -FileVersionInfo

ProductVersion   FileVersion      FileName
--------------   -----------      --------
6.1.2            6.1.2            C:\Program Files\PowerShell\6\pwsh.exe

Dieser Befehl verwendet den FileVersionInfo-Parameter, um die Versionsinformationen für die pwsh.exe Datei abzurufen, die das Standard Moduls für den PowerShell-Prozess ist.

Um diesen Befehl mit Prozessen auszuführen, die Sie unter Windows Vista und höheren Versionen von Windows nicht besitzen, müssen Sie PowerShell mit der Option Als Administrator ausführen öffnen.

Beispiel 7: Abrufen von Modulen, die mit dem angegebenen Prozess geladen wurden

Get-Process SQL* -Module

Dieser Befehl verwendet den Parameter Module , um die Module abzurufen, die vom Prozess geladen wurden. Mit diesem Befehl werden die Module für die Prozesse abgerufen, deren Namen mit SQLbeginnen.

Um diesen Befehl unter Windows Vista und höheren Versionen von Windows mit Prozessen auszuführen, die Sie nicht besitzen, müssen Sie PowerShell mit der Option Als Administrator ausführen starten.

Beispiel 8: Suchen des Besitzers eines Prozesses

Get-Process pwsh -IncludeUserName

Handles      WS(K)   CPU(s)     Id UserName            ProcessName
-------      -----   ------     -- --------            -----------
    782     132080     2.08   2188 DOMAIN01\user01     pwsh

Dieser Befehl zeigt, wie der Besitzer eines Prozesses ermittelt wird. Unter Windows erfordert der IncludeUserName-Parameter erhöhte Benutzerrechte (Als Administrator ausführen). Die Ausgabe zeigt an, dass der Besitzer ist Domain01\user01.

Beispiel 9: Verwenden einer automatischen Variablen zum Identifizieren des Prozesses, der die aktuelle Sitzung hosten

Get-Process pwsh

NPM(K)    PM(M)      WS(M)     CPU(s)      Id  SI ProcessName
------    -----      -----     ------      --  -- -----------
    83    96.21     105.95       4.33    1192  10 pwsh
    79    83.81     117.61       2.16   10580  10 pwsh

Get-Process -Id $PID

NPM(K)    PM(M)      WS(M)     CPU(s)      Id  SI ProcessName
------    -----      -----     ------      --  -- -----------
    83    96.21      77.53       4.39    1192  10 pwsh

Diese Befehle zeigen, wie Sie die $PID automatische Variable verwenden, um den Prozess zu identifizieren, der die aktuelle PowerShell-Sitzung hostet. Sie können den Hostprozess mithilfe dieser Methode von anderen PowerShell-Prozessen unterscheiden, die Sie beenden oder schließen möchten.

Der erste Befehl ruft alle PowerShell-Prozesse in der aktuellen Sitzung ab.

Mit dem zweiten Befehl wird der PowerShell-Prozess abgerufen, der die aktuelle Sitzung hostt.

Beispiel 10: Abrufen aller Prozesse mit einem Standard Fenstertitel und Anzeigen in einer Tabelle

Get-Process | Where-Object {$_.mainWindowTitle} | Format-Table Id, Name, mainWindowtitle -AutoSize

Mit diesem Befehl werden alle Prozesse mit einem Hauptfenstertitel abgerufen und in einer Tabelle mit der Prozess-ID und dem Prozessnamen angezeigt.

Die mainWindowTitle-Eigenschaft ist nur eine von vielen nützlichen Eigenschaften des Process-Objekts , das Get-Process zurückgibt. Um alle Eigenschaften anzuzeigen, leiten Sie die Ergebnisse eines Get-Process Befehls an das Get-Member Cmdlet Get-Process | Get-Memberweiter.

Parameter

-FileVersionInfo

Gibt an, dass dieses Cmdlet die Dateiversionsinformationen für das Programm abruft, das im Prozess ausgeführt wird.

Unter Windows Vista und höheren Versionen von Windows müssen Sie PowerShell mit der Option Als Administrator ausführen öffnen, um diesen Parameter für Prozesse zu verwenden, die Sie nicht besitzen.

Verwenden Sie das Invoke-Command Cmdlet, um Dateiversionsinformationen für einen Prozess auf einem Remotecomputer abzurufen.

Die Verwendung dieses Parameters entspricht dem Abrufen der MainModule.FileVersionInfo-Eigenschaft jedes Prozessobjekts. Wenn Sie diesen Parameter verwenden, Get-Process gibt das FileVersionInfo-ObjektSystem.Diagnostics.FileVersionInfo und kein Prozessobjekt zurück. Daher können Sie die Ausgabe des Befehls nicht an ein Cmdlet weiterleiten, das ein Prozessobjekt erwartet, z. B Stop-Process. .

Type:SwitchParameter
Aliases:FV, FVI
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Id

Gibt einen oder mehrere Prozesse anhand der Prozess-ID (PID) an. Wenn Sie mehrere IDs angeben, trennen Sie diese durch Kommas. Um die PID eines Prozesses zu suchen, geben Sie ein Get-Process.

Type:Int32[]
Aliases:PID
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-IncludeUserName

Gibt an, dass der UserName-Wert des Process-Objekts mit den Ergebnissen des Befehls zurückgegeben wird.

Type:SwitchParameter
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-InputObject

Gibt Prozessobjekte an. Geben Sie eine Variable ein, die die Objekte enthält, oder geben Sie einen Befehl oder einen Ausdruck ein, mit dem die Objekte abgerufen werden.

Type:Process[]
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Module

Gibt an, dass dieses Cmdlet die Module abruft, die von den Prozessen geladen wurden.

Unter Windows Vista und höheren Versionen von Windows müssen Sie PowerShell mit der Option Als Administrator ausführen öffnen, um diesen Parameter für Prozesse zu verwenden, die Sie nicht besitzen.

Verwenden Sie das Cmdlet, um die Module abzurufen, die Invoke-Command von einem Prozess auf einem Remotecomputer geladen wurden.

Dieser Parameter entspricht dem Abrufen der Modules-Eigenschaft jedes Prozessobjekts. Wenn Sie diesen Parameter verwenden, gibt dieses Cmdlet ein ProcessModule-ObjektSystem.Diagnostics.ProcessModule und kein Prozessobjekt zurück. Daher können Sie die Ausgabe des Befehls nicht an ein Cmdlet weiterleiten, das ein Prozessobjekt erwartet, z. B Stop-Process. .

Wenn Sie sowohl die Parameter Module als auch FileVersionInfo im selben Befehl verwenden, gibt dieses Cmdlet ein FileVersionInfo-Objekt mit Informationen zur Dateiversion aller Module zurück.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Name

Gibt einen oder mehrere Prozesse mit ihrem Prozessnamen an. Sie können mehrere Prozessnamen eingeben (getrennt durch Kommas) und Platzhalterzeichen verwenden. Der Parametername (Name) ist optional.

Type:String[]
Aliases:ProcessName
Position:0
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:True

Eingaben

Process

Sie können ein Prozessobjekt an dieses Cmdlet weiterleiten.

Ausgaben

System.Diagnostics.Process, System.Diagnostics.FileVersionInfo, System.Diagnostics.ProcessModule

Standardmäßig gibt dieses Cmdlet ein System.Diagnostics.Process-Objekt zurück. Wenn Sie den FileVersionInfo-Parameter verwenden, wird ein System.Diagnostics.FileVersionInfo-Objekt zurückgegeben. Wenn Sie den Module-Parameter ohne den FileVersionInfo-Parameter verwenden, wird ein System.Diagnostics.ProcessModule-Objekt zurückgegeben.

Hinweise

  • Sie können auch auf dieses Cmdlet anhand der integrierten Aliase ps und gpsverweisen. Weitere Informationen finden Sie unter about_Aliases.
  • Auf Computern mit einer 64-Bit-Version von Windows erhält die 64-Bit-Version von PowerShell nur 64-Bit-Prozessmodule und die 32-Bit-Version von PowerShell nur 32-Bit-Prozessmodule.
  • Sie können die Eigenschaften und Methoden der Windows-Verwaltungsinstrumentation (WMI) Win32_Process -Objekts in PowerShell verwenden. Weitere Informationen finden Sie unter Get-WmiObject und im WMI SDK.
  • Die Standardanzeige eines Prozesses ist eine Tabelle mit den folgenden Spalten: Eine Beschreibung aller Eigenschaften von Prozessobjekten finden Sie unter Prozesseigenschaften.
    • Handles: Die Anzahl der Handles, die der Prozess geöffnet hat.
    • NPM(K): Die Menge des nicht ausgelagerten Arbeitsspeichers, den der Prozess verwendet, in Kilobyte.
    • PM(K): Die Vom Prozess verwendete Auslagerungsspeichermenge in Kilobyte.
    • WS(K): Die Größe des Arbeitssatzes des Prozesses in Kilobyte. Der Arbeitssatz besteht aus Speicherseiten, auf die zuvor vom Prozess verwiesen wurde.
    • VM(M): Die Menge des virtuellen Arbeitsspeichers, den der Prozess verwendet, in Megabyte. Der virtuelle Speicher umfasst den Speicher der Auslagerungsdateien auf dem Datenträger.
    • CPU(s): Die Vom Prozess auf allen Prozessoren verbrauchte Prozessorzeit in Sekunden.
    • ID: Die Prozess-ID (PID) des Prozesses.
    • ProcessName: Der Name des Prozesses. Erläuterungen zu den Prozesskonzepten finden Sie im Glossar des Hilfe- und Supportcenters sowie in der Hilfe des Task-Managers.
  • Sie können auch die integrierten alternativen Ansichten der mit Format-Tableverfügbaren Prozesse verwenden, z. B . StartTime und Priority, und Sie können Ihre eigenen Ansichten entwerfen.