Ce face Stop-Process
Stop-Process oprește procese de pe computerul local. Primul parametru pozițional este -Id (Stop-Process 4812); pentru nume trebuie să scrii explicit -Name, iar comanda oprește toate procesele cu acel nume. Poți primi procesele și prin pipeline, de la Get-Process, după ce le-ai filtrat cu Where-Object.
Cmdlet-ul folosește metoda Process.Kill(): procesul este închis forțat, fără să i se ceară să salveze ceva, deci datele nesalvate se pierd. Comanda este asincronă: se întoarce imediat, iar procesul poate dispărea puțin mai târziu; dacă trebuie să aștepți, folosește Wait-Process sau proprietatea HasExited. Fără -PassThru nu afișează nimic.
Pe Windows, pentru a opri procesul altui utilizator ai nevoie de o sesiune pornită cu „Run as administrator”, iar comanda cere confirmare pentru procesele care nu îți aparțin, dacă nu adaugi -Force. Oprirea unui proces poate opri și serviciile care depind de el. Aliasuri: spps pe toate sistemele, kill doar pe Windows.
Parametri
| Parametru | Descriere |
|---|---|
-Id |
ID-urile proceselor de oprit, separate prin virgulă. Este parametrul pozițional implicit. |
-Name |
Numele proceselor de oprit; acceptă wildcard-uri și oprește toate instanțele. |
-InputObject |
Obiecte Process din variabilă sau din pipeline. |
-Force |
Oprește fără confirmare și procesele care nu aparțin utilizatorului curent. |
-PassThru |
Întoarce obiectul procesului oprit (implicit comanda nu afișează nimic). |
-WhatIf |
Arată ce procese ar fi oprite, fără să le oprească. |
-Confirm |
Cere confirmare înainte de fiecare proces. |
Ce returnează
Nimic, implicit; cu -PassThru, câte un obiect Process pentru fiecare proces oprit.
Exemple
Exemplul 1: Închiderea tuturor ferestrelor Notepad
Toate procesele cu numele notepad sunt oprite; comanda nu afișează nimic.
Stop-Process -Name notepad
Exemplul 2: Verificare cu -WhatIf înainte de oprire
Vezi exact ce procese ar fi oprite (nume și PID), fără să se întâmple nimic.
Get-Process -Name EXCEL | Stop-Process -WhatIf
Ieșire în terminal
What if: Performing the operation "Stop-Process" on target "EXCEL (5320)".
What if: Performing the operation "Stop-Process" on target "EXCEL (9876)".
Exemplul 3: Oprirea proceselor node pornite de peste 8 ore
Filtrăm după StartTime, oprim fără confirmare și afișăm ce s-a oprit cu -PassThru.
Get-Process -Name node |
Where-Object StartTime -LT (Get-Date).AddHours(-8) |
Stop-Process -Force -PassThru |
Select-Object Name, Id
Ieșire în terminal
Name Id
---- --
node 7716
Greșeli frecvente
- Rulezi
Stop-Process -Name pwshși închizi chiar fereastra în care lucrezi: exclude sesiunea curentă cuWhere-Object Id -ne $PID. - Scrii
Stop-Process notepadfără-Name: parametrul pozițional este-Id, așa că primești o eroare de conversie a textului în număr. - Verifici imediat după comandă dacă procesul a dispărut: oprirea este asincronă; folosește
Wait-Process -Id 4812înainte de pasul următor. - Pe Linux sau macOS scrii
killcrezând că este aliasul PowerShell: acolokilleste comanda nativă, care primește PID-uri și semnale, nu parametri ca-Name.
Comenzi înrudite
Get-Process: Afișează procesele care rulează pe computerul local, cu memoria folosită, timpul de procesor și ID-ul (PID) fiecăruia.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.