Freigeben über


Get-Process

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

Syntax

Name (Standardwert)

Get-Process
    [[-Name] <String[]>]
    [-Module]
    [-FileVersionInfo]
    [<CommonParameters>]

NameWithUserName

Get-Process
    [[-Name] <String[]>]
    -IncludeUserName
    [<CommonParameters>]

Id

Get-Process
    -Id <Int32[]>
    [-Module]
    [-FileVersionInfo]
    [<CommonParameters>]

IdWithUserName

Get-Process
    -Id <Int32[]>
    -IncludeUserName
    [<CommonParameters>]

InputObject

Get-Process
    -InputObject <Process[]>
    [-Module]
    [-FileVersionInfo]
    [<CommonParameters>]

InputObjectWithUserName

Get-Process
    -InputObject <Process[]>
    -IncludeUserName
    [<CommonParameters>]

Beschreibung

Das Get-Process Cmdlet ruft die Prozesse auf einem lokalen Computer 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.

Beispiel 5: Hinzufügen einer Eigenschaft zur standardmäßigen Ausgabeanzeige "Get-Process"

Get-Process -Name pwsh | Format-Table -Property @(
    @{ Name = 'NPM(K)'; Expression = { [int] ($_.NPM / 1KB) } }
    @{ Name = 'PM(M)';  Expression = { [int] ($_.PM / 1MB) } }
    @{ Name = 'WS(M)';  Expression = { [int] ($_.WS / 1MB) } }
    @{ Name = 'CPU(s)'; Expression = { if ($_.CPU) { $_.CPU.ToString('N') } } }
    'Id'
    @{ Name = 'SI'; Expression = 'SessionId' }
    'ProcessName'
    'StartTime'
) -AutoSize
NPM(K) PM(M) WS(M) CPU(s)   Id SI ProcessName StartTime
------ ----- ----- ------   -- -- ----------- ---------
    84    46    79 18.297 3188  1 pwsh        4/14/2025 10:40:10 AM
    66    30    90 4.328  4640  1 pwsh        4/13/2025 3:33:50 PM
    66    30    90 4.516  9204  1 pwsh        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 pwsh -FileVersionInfo
ProductVersion   FileVersion      FileName
--------------   -----------      --------
7.5.0 SHA: 99da… 7.5.0.500        C:\Program Files\PowerShell\7\pwsh.exe

Dieser Befehl verwendet den Parameter FileVersionInfo , um Dateiversionsinformationen für das Hauptmodul des pwsh Prozesses abzurufen. Das Hauptmodul ist die Datei, die zum Starten des Prozesses verwendet wird, was in diesem Fall der Fall ist pwsh.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 pwsh -IncludeUserName
WS(M)   CPU(s)      Id UserName                       ProcessName
-----   ------      -- --------                       -----------
46.53    21.70    3188 DOMAIN01\user01                pwsh
Get-CimInstance -ClassName Win32_Process -Filter "name='pwsh.exe'" |
    Invoke-CimMethod -MethodName GetOwner
Domain   ReturnValue User   PSComputerName
------   ----------- ----   --------------
DOMAIN01           0 user01

Der erste Befehl zeigt, wie der Besitzer eines Prozesses abgerufen wird. 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 pwsh , und die aufgerufene GetOwner() Methode gibt Informationen zur Domäne und zum Benutzer des Prozesses zurück. Diese Methode ist nur unter Windows verfügbar und erfordert keine erhöhten Benutzerrechte.

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

Get-Process -Name 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 diese Methode verwenden, um den Hostprozess von anderen pwsh Prozessen zu unterscheiden, die Sie möglicherweise steuern möchten.

Der erste Befehl ruft alle pwsh ausgeführten Prozesse ab. Der zweite Befehl ruft den Prozess ab, der pwsh 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

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

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

Id
Position:Named
Obligatorisch.:True
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:True
Wert aus verbleibenden Argumenten:False
IdWithUserName
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.

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

InputObject
Position:Named
Obligatorisch.:True
Wert aus Pipeline:True
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
InputObjectWithUserName
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.

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

PowerShell enthält die folgenden Aliase für Get-Process:

  • Alle Plattformen:
    • gps
  • Fenster:
    • ps

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.

Unter Windows können Sie 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.

  • NPM(K): Die Menge des nicht ausgelagerten Speichers, den der Prozess verwendet, in Kilobyte.
  • PM(M): Die Menge des ausgelagerten Arbeitsspeichers, den der Prozess verwendet, in Megabyte.
  • WS(M): Die Größe des Arbeitssatzes des Prozesses in Megabyte. 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".