Udostępnij za pomocą


Get-Process

Pobiera procesy uruchomione na komputerze lokalnym.

Składnia

Name (Domyślna)

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

Opis

Polecenie cmdlet Get-Process pobiera procesy na komputerze lokalnym.

Bez parametrów to polecenie cmdlet pobiera wszystkie procesy na komputerze lokalnym. Można również określić określony proces według nazwy procesu lub identyfikatora procesu (PID) lub przez potokowanie obiektu System.Diagnostics.Process do tego polecenia cmdlet.

Domyślnie to polecenie cmdlet zwraca obiekt Process , który zawiera szczegółowe informacje o procesie i obsługuje metody, które umożliwiają sterowanie nim. Za pomocą parametrów można zmienić typ informacji zwracanych przez to polecenie cmdlet.

  • Moduł: pobieranie informacji dla każdego modułu załadowanego do procesu.
  • FileVersionInfo: pobieranie informacji o wersji pliku dla głównego modułu procesu.

Uwaga / Notatka

Moduł to plik wykonywalny lub biblioteka łączy dynamicznych (DLL) załadowana do procesu. Proces zawiera co najmniej jeden moduł. Moduł główny jest modułem używanym do początkowego uruchamiania procesu. Aby uzyskać więcej informacji, zobacz ProcessModule Class (Klasa ProcessModule).

Przykłady

Przykład 1. Pobieranie listy wszystkich uruchomionych procesów na komputerze lokalnym

Get-Process

To polecenie pobiera listę wszystkich uruchomionych procesów na komputerze lokalnym. Aby uzyskać definicję każdej kolumny wyświetlania, zobacz sekcję UWAGI .

Aby wyświetlić wszystkie właściwości obiektu Process , użyj polecenia Get-Process | Get-Member. Domyślnie program PowerShell wyświetla niektóre wartości właściwości przy użyciu jednostek, takich jak kilobajty (K) i megabajty (M). Rzeczywiste wartości, do których uzyskuje się dostęp za pomocą operatora dostępu do elementu członkowskiego (.), są w bajtach.

Przykład 2. Wyświetlanie szczegółowych informacji o co najmniej jednym procesie

Get-Process winword, explorer | Format-List *

Ten potok wyświetla szczegółowe informacje o winword procesach i explorer na komputerze. Używa parametru Name w celu określenia procesów, ale pomija opcjonalną nazwę parametru. Operator potoku (|) potokuje obiekty przetwarzania do Format-List polecenia cmdlet, które wyświetla wszystkie dostępne właściwości (*) i ich wartości dla każdego obiektu.

Można również zidentyfikować procesy według ich identyfikatorów procesów. Przykład: Get-Process -Id 664, 2060.

Przykład 3. Pobieranie wszystkich procesów z zestawem roboczym większym niż określony rozmiar

Get-Process | Where-Object { $_.WorkingSet -gt 20971520 }
Get-Process | Where-Object WorkingSet -GT 20MB

Polecenie Get-Process cmdlet zwraca uruchomione procesy. Dane wyjściowe są przesyłane potokiem do Where-Object polecenia cmdlet, które wybiera obiekty z wartością WorkingSet większą niż 20 971 520 bajtów.

W pierwszym przykładzie Where-Object użyto skryptblocku do porównania właściwości WorkingSet każdego obiektu Process . W drugim przykładzie Where-Object polecenie cmdlet używa uproszczonej składni do porównania właściwości WorkingSet . W tym przypadku -GT jest parametrem, a nie operatorem porównania. W drugim przykładzie użyto również sufiksu literału liczbowego jako zwięzłej alternatywy dla 20971520metody . W programie PowerShell MB reprezentuje mnożnik mebibajt (MiB). 20MB jest równa 20 971 520 bajtów.

Przykład 4. Wyświetlanie procesów na komputerze w grupach na podstawie priorytetu

$processes = Get-Process
$processes | Sort-Object { $_.PriorityClass } | Format-Table -View Priority

Te polecenia wyświetlają procesy na komputerze w grupach na podstawie ich klasy priorytetu. Pierwsze polecenie pobiera wszystkie procesy na komputerze i przechowuje je w zmiennej $processes .

Drugie polecenie potokuje obiekty Procesu przechowywane w zmiennej $processes do Sort-Object polecenia cmdlet, a następnie do Format-Table polecenia cmdlet, które formatuje procesy przy użyciu widoku Priorytet .

Przykład 5. Dodawanie właściwości do domyślnego wyświetlania danych wyjściowych "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

W tym przykładzie są pobierane procesy z komputera lokalnego i potokuje każdy obiekt Procesu do Format-Table polecenia cmdlet. Format-Table Odtwarza domyślne wyświetlanie danych wyjściowych obiektu Procesu przy użyciu kombinacji nazw właściwości i właściwości obliczeniowych. Ekran zawiera dodatkową właściwość StartTime , która nie jest obecna na ekranie domyślnym.

Przykład 6. Pobieranie informacji o wersji dla procesu

Get-Process -Name pwsh -FileVersionInfo
ProductVersion   FileVersion      FileName
--------------   -----------      --------
7.5.0 SHA: 99da… 7.5.0.500        C:\Program Files\PowerShell\7\pwsh.exe

To polecenie używa parametru FileVersionInfo , aby uzyskać informacje o wersji pliku dla głównego modułu pwsh procesu. Głównym modułem jest plik używany do uruchomienia procesu, który w tym przypadku to pwsh.exe.

Aby użyć tego polecenia z procesami, które nie są własnością systemu Windows Vista i nowszych wersji systemu Windows, należy uruchomić program PowerShell z podwyższonym poziomem uprawnień użytkownika (Uruchom jako administrator).

Przykład 7. Pobieranie modułów załadowanych przy użyciu określonego procesu

Get-Process -Name SQL* -Module

To polecenie używa parametru Moduł , aby pobrać moduły załadowane przez wszystkie procesy o nazwie rozpoczynającej się od SQL.

Aby użyć tego polecenia z procesami, które nie są własnością systemu Windows Vista i nowszych wersji systemu Windows, należy uruchomić program PowerShell z podwyższonym poziomem uprawnień użytkownika (Uruchom jako administrator).

Przykład 8. Znajdowanie właściciela procesu

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

Pierwsze polecenie pokazuje, jak uzyskać właściciela procesu. Dane wyjściowe pokazują, że właściciel jest DOMAIN01\user01.

Drugi potok pokazuje inny sposób uzyskiwania właściciela procesu przy użyciu elementów Get-CimInstance i Invoke-CimMethod. Klasa Win32_Process z filtrem pobiera pwsh procesy, a wywołana GetOwner() metoda zwraca informacje dotyczące domeny i użytkownika procesu. Ta metoda jest dostępna tylko w systemie Windows i nie wymaga podwyższonych uprawnień użytkownika.

Przykład 9. Używanie zmiennej automatycznej do identyfikowania procesu obsługującego bieżącą sesję

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

Te polecenia pokazują, jak używać $PID zmiennej automatycznej do identyfikowania procesu, który hostuje bieżącą sesję programu PowerShell. Za pomocą tej metody można odróżnić proces hosta od innych pwsh procesów, które warto kontrolować.

Pierwsze polecenie pobiera wszystkie pwsh uruchomione procesy. Drugie polecenie pobiera pwsh proces hostujący bieżącą sesję.

Przykład 10: Pobieranie wszystkich procesów, które mają tytuł okna głównego i wyświetlanie ich w tabeli

Get-Process |
    Where-Object -Property MainWindowTitle |
    Format-Table -Property Id, Name, MainWindowTitle -AutoSize

Ten potok pobiera wszystkie procesy, które mają tytuł okna głównego i wyświetla je w tabeli z identyfikatorem procesu i nazwą.

MainWindowTitle jest jedną z wielu przydatnych właściwości zwracanego typu Get-Process obiektu Diagnostics.Process. Aby wyświetlić wszystkie właściwości, użyj polecenia Get-Process | Get-Member.

Parametry

-FileVersionInfo

Wskazuje, że to polecenie cmdlet pobiera informacje o wersji pliku dla programu, który jest uruchamiany w procesie.

W systemie Windows Vista i nowszych wersjach systemu Windows należy uruchomić program PowerShell z podwyższonym poziomem uprawnień użytkownika (Uruchom jako administrator), aby użyć tego parametru w procesach, których nie jesteś właścicielem.

Użycie tego parametru jest takie samo jak uzyskiwanie dostępu do właściwości MainModule.FileVersionInfo każdego obiektu Process . Jeśli używasz tego parametru, Get-Process zwraca obiekt FileVersionInfo , a nie obiekt Process . Nie można potokować danych wyjściowych generowanych przy użyciu tego parametru do polecenia cmdlet, które oczekuje obiektu Process , takiego jak Stop-Process.

Właściwości parametru

Typ:SwitchParameter
Domyślna wartość:False
Obsługuje symbole wieloznaczne:False
DontShow:False
Aliasy:FV, FVI

Zestawy parametrów

Name
Position:Named
Obowiązkowy:False
Wartość z potoku:False
Wartość z potoku według nazwy właściwości:False
Wartość z pozostałych argumentów:False
Id
Position:Named
Obowiązkowy:False
Wartość z potoku:False
Wartość z potoku według nazwy właściwości:False
Wartość z pozostałych argumentów:False
InputObject
Position:Named
Obowiązkowy:False
Wartość z potoku:False
Wartość z potoku według nazwy właściwości:False
Wartość z pozostałych argumentów:False

-Id

Określa co najmniej jeden proces według identyfikatora procesu (PID). Można określić wiele identyfikatorów rozdzielonych przecinkami. Aby uzyskać identyfikator PID procesu, użyj polecenia Get-Process. Aby uzyskać identyfikator PID bieżącej sesji programu PowerShell, użyj polecenia $PID.

Właściwości parametru

Typ:

Int32[]

Domyślna wartość:None
Obsługuje symbole wieloznaczne:False
DontShow:False
Aliasy:identyfikator PID

Zestawy parametrów

Id
Position:Named
Obowiązkowy:True
Wartość z potoku:False
Wartość z potoku według nazwy właściwości:True
Wartość z pozostałych argumentów:False
IdWithUserName
Position:Named
Obowiązkowy:True
Wartość z potoku:False
Wartość z potoku według nazwy właściwości:True
Wartość z pozostałych argumentów:False

-IncludeUserName

Wskazuje, że to polecenie dodaje właściwość UserName do każdego zwróconego obiektu Procesu .

Właściwości parametru

Typ:SwitchParameter
Domyślna wartość:None
Obsługuje symbole wieloznaczne:False
DontShow:False

Zestawy parametrów

NameWithUserName
Position:Named
Obowiązkowy:True
Wartość z potoku:False
Wartość z potoku według nazwy właściwości:False
Wartość z pozostałych argumentów:False
IdWithUserName
Position:Named
Obowiązkowy:True
Wartość z potoku:False
Wartość z potoku według nazwy właściwości:False
Wartość z pozostałych argumentów:False
InputObjectWithUserName
Position:Named
Obowiązkowy:True
Wartość z potoku:False
Wartość z potoku według nazwy właściwości:False
Wartość z pozostałych argumentów:False

-InputObject

Określa co najmniej jeden obiekt procesu . Użyj zmiennej zawierającej obiekty lub polecenia lub wyrażenia, które pobiera obiekty.

Właściwości parametru

Typ:

Process[]

Domyślna wartość:None
Obsługuje symbole wieloznaczne:False
DontShow:False

Zestawy parametrów

InputObject
Position:Named
Obowiązkowy:True
Wartość z potoku:True
Wartość z potoku według nazwy właściwości:False
Wartość z pozostałych argumentów:False
InputObjectWithUserName
Position:Named
Obowiązkowy:True
Wartość z potoku:True
Wartość z potoku według nazwy właściwości:False
Wartość z pozostałych argumentów:False

-Module

Wskazuje, że to polecenie cmdlet pobiera moduły załadowane przez proces.

W systemie Windows Vista i nowszych wersjach systemu Windows należy uruchomić program PowerShell z podwyższonym poziomem uprawnień użytkownika (Uruchom jako administrator), aby użyć tego parametru w procesach, których nie jesteś właścicielem.

Użycie tego parametru jest takie samo jak uzyskiwanie dostępu do właściwości Modules każdego obiektu Process . Jeśli używasz tego parametru, Get-Process zwraca obiekt ProcessModule , a nie obiekt Process . Nie można potokować danych wyjściowych generowanych przy użyciu tego parametru do polecenia cmdlet, które oczekuje obiektu Process , takiego jak Stop-Process.

Jeśli używasz jednocześnie parametrów Module i FileVersionInfo , to polecenie cmdlet zwraca obiekt FileVersionInfo z informacjami o wersji pliku wszystkich modułów.

Właściwości parametru

Typ:SwitchParameter
Domyślna wartość:False
Obsługuje symbole wieloznaczne:False
DontShow:False

Zestawy parametrów

Name
Position:Named
Obowiązkowy:False
Wartość z potoku:False
Wartość z potoku według nazwy właściwości:False
Wartość z pozostałych argumentów:False
Id
Position:Named
Obowiązkowy:False
Wartość z potoku:False
Wartość z potoku według nazwy właściwości:False
Wartość z pozostałych argumentów:False
InputObject
Position:Named
Obowiązkowy:False
Wartość z potoku:False
Wartość z potoku według nazwy właściwości:False
Wartość z pozostałych argumentów:False

-Name

Określa co najmniej jeden proces według nazwy procesu. Można określić wiele nazw procesów rozdzielonych przecinkami i używać symboli wieloznacznych. Użycie parametru -Name jest opcjonalne.

Właściwości parametru

Typ:

String[]

Domyślna wartość:None
Obsługuje symbole wieloznaczne:True
DontShow:False
Aliasy:Nazwa procesu

Zestawy parametrów

Name
Position:0
Obowiązkowy:False
Wartość z potoku:False
Wartość z potoku według nazwy właściwości:True
Wartość z pozostałych argumentów:False
NameWithUserName
Position:0
Obowiązkowy:False
Wartość z potoku:False
Wartość z potoku według nazwy właściwości:True
Wartość z pozostałych argumentów:False

CommonParameters

To polecenie cmdlet obsługuje typowe parametry: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction i -WarningVariable. Aby uzyskać więcej informacji, zobacz about_CommonParameters.

Dane wejściowe

Process

Do tego polecenia cmdlet można przekazać potokowe obiekty procesu .

Dane wyjściowe

Process

Domyślnie to polecenie cmdlet zwraca obiekt System.Diagnostics.Process.

FileVersionInfo

Jeśli używasz parametru FileVersionInfo , to polecenie cmdlet zwraca obiekt System.Diagnostics.FileVersionInfo .

ProcessModule

Jeśli używasz parametru Module bez parametru FileVersionInfo , to polecenie cmdlet zwraca obiekt System.Diagnostics.ProcessModule .

Uwagi

Program PowerShell zawiera następujące aliasy dla Get-Process:

  • Wszystkie platformy:
    • gps
  • Windows:
    • ps

Na komputerach z 64-bitowym systemem Windows 64-bitowa wersja programu PowerShell pobiera moduł główny i 64-bitowe moduły przetwarzania. 32-bitowa wersja programu PowerShell pobiera tylko 32-bitowe moduły przetwarzania.

Ostrzeżenie

Jeśli używasz Get-Process metody do pobrania 64-bitowego procesu w 32-bitowej wersji programu PowerShell, właściwości takie jak Path i MainModule zwrócony obiekt Procesu to $null. Należy użyć 64-bitowej wersji programu PowerShell lub klasy Win32_Process .

Aby uzyskać informacje o procesie z komputera zdalnego, użyj polecenia cmdlet Invoke-Command. Aby uzyskać więcej informacji, zobacz Invoke-Command.

W systemie Windows możesz użyć klasy instrumentacji zarządzania Windows (WMI) Win32_Process w programie PowerShell jako alternatywy dla Get-Process. Aby uzyskać więcej informacji, zobacz:

Domyślnym wyświetlaniem obiektu Procesu jest widok tabeli zawierający następujące kolumny.

  • NPM(K): ilość niestronicowanej pamięci używanej przez proces w kilobajtach.
  • PM(M): ilość pamięci stronicowalnej używanej przez proces w megabajtach.
  • WS(M): rozmiar zestawu roboczego procesu w megabajtach. Zestaw roboczy składa się ze stron pamięci, do których ostatnio odwołuje się proces.
  • procesora cpu: czas procesora używany przez proces na wszystkich procesorach w sekundach.
  • Identyfikator: identyfikator procesu (PID) procesu.
  • SI: identyfikator sesji procesu.
  • ProcessName: nazwa procesu.

Można użyć wbudowanych widoków alternatywnych dla obiektów procesów dostępnych w Format-Tableprogramie , takich jak StartTime i Priority. Możesz również zaprojektować własne widoki.

Opis wszystkich dostępnych elementów członkowskich obiektu procesu można znaleźć w temacie Właściwości procesu i metody procesu.