Get-Process în PowerShell

Procese și servicii Windows PowerShell 1.0

Afișează procesele care rulează pe computerul local, cu memoria folosită, timpul de procesor și ID-ul (PID) fiecăruia.

Sintaxă
Get-Process [[-Name] <String[]>] [-Module] [-FileVersionInfo]
Get-Process -Id <Int32[]> [-IncludeUserName]

Ce face Get-Process

Get-Process întoarce câte un obiect System.Diagnostics.Process pentru fiecare proces de pe computerul local. Fără parametri listează toate procesele; cu -Name (acceptă wildcard-uri, de exemplu chrom*) sau cu -Id alegi doar unele. Pentru că primești obiecte, nu text, le poți filtra și sorta direct cu Where-Object, Sort-Object și Select-Object.

Tabelul implicit are coloanele NPM(K) (memorie nepaginată, în KB), PM(M) (memorie paginabilă, în MB), WS(M) (working set, memoria folosită recent, în MB), CPU(s) (secunde de procesor pe toate nucleele), Id, SI (ID-ul sesiunii) și ProcessName. Valorile citite cu punct, de exemplu (Get-Process -Id $PID).WorkingSet, sunt în octeți. Variabila automată $PID conține ID-ul procesului PowerShell în care lucrezi.

Cmdlet-ul funcționează pe Windows, Linux și macOS și citește doar procesele locale: în PowerShell 7 nu are parametrul -ComputerName, iar pentru alt computer folosești Invoke-Command. Aliasul gps există peste tot, ps doar pe Windows (pe Linux și macOS, ps pornește comanda nativă).

Parametri

Parametru Descriere
-Name Unul sau mai multe nume de procese, separate prin virgulă; acceptă wildcard-uri. Numele parametrului poate lipsi (Get-Process pwsh).
-Id Unul sau mai multe ID-uri de proces (PID), separate prin virgulă.
-InputObject Obiecte Process primite dintr-o variabilă sau prin pipeline.
-IncludeUserName Adaugă proprietatea UserName, adică proprietarul procesului.
-Module Întoarce modulele (fișierele .exe și .dll) încărcate de proces, nu procesul. Pe Windows, pentru procesele altor utilizatori ai nevoie de o sesiune pornită cu „Run as administrator”.
-FileVersionInfo Întoarce informațiile de versiune ale fișierului principal al procesului (alias -FV).

Ce returnează

Obiecte System.Diagnostics.Process; cu -Module, obiecte ProcessModule; cu -FileVersionInfo, obiecte FileVersionInfo.

Exemple

Exemplul 1: Toate procesele pwsh deschise

Fiecare fereastră PowerShell 7 este un proces pwsh separat; Get-Process -Id $PID l-ar afișa doar pe cel curent.

Get-Process -Name pwsh

Ieșire în terminal

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

Exemplul 2: Primele trei procese după timpul de procesor

Sortăm descrescător după proprietatea CPU și păstrăm doar numele, ID-ul și secundele de procesor.

Get-Process | Sort-Object -Property CPU -Descending | Select-Object -First 3 -Property Name, Id, CPU

Ieșire în terminal

Name     Id        CPU
----     --        ---
chrome 8124 512.359375
Code   6640    201.875
pwsh   1192   4.390625

Exemplul 3: Procesele care folosesc peste 500 MB de memorie

500MB este un literal numeric (524.288.000 de octeți). Coloana calculată MemorieMB transformă working set-ul din octeți în MB.

Get-Process |
    Where-Object WorkingSet -GT 500MB |
    Select-Object Name, Id, @{ Name = 'MemorieMB'; Expression = { [int]($_.WorkingSet / 1MB) } }

Ieșire în terminal

Name     Id MemorieMB
----     -- ---------
chrome 8124       742
Code   6640       551

Greșeli frecvente

  • Citești WorkingSet sau PM și crezi că valoarea e în MB, ca în tabel: proprietățile sunt în octeți; împarte la 1MB.
  • Cauți procesul după numele fișierului cu extensie (Get-Process notepad.exe): numele procesului nu include .exe, scrie Get-Process notepad.
  • Trimiți rezultatul lui Get-Process -Module sau -FileVersionInfo la Stop-Process: acești parametri întorc alte tipuri de obiecte, nu procese.
  • Scrii scripturi cu aliasul ps și le rulezi pe Linux sau macOS: acolo ps este comanda nativă, care întoarce text; folosește numele complet Get-Process.

Comenzi înrudite

  • Stop-Process: Oprește unul sau mai multe procese locale, după nume, după ID sau primite prin pipeline de la Get-Process.
  • Start-Process: Pornește un program sau deschide un fișier cu aplicația asociată, opțional ca administrator, într-o fereastră nouă sau așteptând să se termine.
  • Where-Object: Filtrează obiectele din pipeline și le lasă să treacă doar pe cele care îndeplinesc o condiție.
  • Sort-Object: Sortează obiectele după una sau mai multe proprietăți, crescător sau descrescător, opțional doar primele N.
  • Select-Object: Alege doar anumite proprietăți ale obiectelor, adaugă proprietăți calculate sau păstrează primele, ultimele ori unicele elemente.
  • Invoke-Command: Rulează comenzi sau scripturi pe unul sau mai multe computere deodată și aduce înapoi rezultatele, inclusiv erorile.