A cosa serve lo Stop-Process di PowerShell e come padroneggiarlo

Ultimo aggiornamento: 17/12/2025
Autore: Isaac
  • Stop-Process è il cmdlet per PowerShell per arrestare i processi locali in base al nome, all'ID o utilizzando oggetti Process, integrandosi facilmente con altri cmdlet come Get-Process.
  • I suoi parametri chiave (-Id, -Name, -InputObject, -Confirm, -Force, -PassThru e -WhatIf) consentono un controllo preciso su quali processi vengono chiusi, come viene confermata l'azione e quali informazioni vengono restituite.
  • In combinazione con filtri (Where-Object), alias, gestione degli errori e altri cmdlet amministrativi, Stop-Process diventa un potente strumento per automatizzare la terminazione sicura e selettiva dei processi in Windows.

Arresto del processo di PowerShell

Se lavori quotidianamente con Windows, prima o poi ti capiterà di dover terminare un processo indesiderato dalla riga di comando . Puoi farlo con il vecchio CMD , ma PowerShell, e in particolare il cmdlet Stop-Process , progettato proprio per interrompere i processi in esecuzione, rivela la sua vera utilità e potenza.

Oltre al classico esempio di chiusura del Blocco note, Stop-Process è uno strumento fondamentale per gestire i processi in blocco , in modo automatico e sicuro , sia sul proprio PC che in un ambiente aziendale. Analizziamo nel dettaglio a cosa serve, come utilizzarlo e quali consigli pratici applicare nel lavoro quotidiano per sfruttarlo al meglio.

Che cos'è Stop-Process in PowerShell e a cosa serve?

In PowerShell, Stop-Process è un cmdlet progettato per terminare uno o più processi in esecuzione sul computer locale. È l'equivalente avanzato del comando "termina attività" di Gestione attività , ma accessibile da script e dalla riga di comando.

Questo cmdlet consente di arrestare i processi in base al nome, all'ID (PID) o passando direttamente oggetti Process . Inoltre, è possibile integrarlo con altri cmdlet come Get-Process, Where-Object o pipe per creare soluzioni sofisticate, ad esempio terminando solo processi specifici in determinate condizioni.

Nota importante: Stop-Process ha effetto solo sui processi in esecuzione sul computer locale . Non interrompe direttamente i processi su macchine remote; in questi casi, è necessario combinarlo con sessioni PowerShell remote o altri strumenti, ma il cmdlet stesso è limitato al sistema in cui viene eseguito.

Su sistemi come Windows Vista e versioni successive, se si desidera interrompere processi che non appartengono all'utente corrente (ad esempio, servizi di sistema o processi appartenenti ad altri utenti), è necessario aprire PowerShell con l' opzione "Esegui come amministratore" . In caso contrario, verranno visualizzati errori di accesso negato quando si tenta di interrompere determinati processi critici.

Per impostazione predefinita, quando Stop-Process tenta di interrompere un processo che non è di tua proprietà, PowerShell potrebbe richiedere una conferma, a meno che tu non forzi la terminazione o modifichi le impostazioni delle preferenze di conferma. Vedremo in seguito come controllare questo comportamento utilizzando i parametri -Confirm e -Force.

Sintassi e modi per utilizzare Stop-Process

Stop-Process supporta diversi set di parametri, offrendoti diversi modi per specificare quali processi desideri arrestare . I più comuni sono:

Arresta i processi tramite ID (PID)

Il modo più diretto e preciso per fare riferimento a un processo è tramite il suo identificativo di processo (PID) . La sintassi generale è:

Sintassi (PID): Stop-Process <Int32[]>

Parametro -Id Accetta uno o più PID (in formato intero). Se si desidera arrestare più processi contemporaneamente, è possibile specificare gli ID separati da virgole, ad esempio -Id 1234, 5678Per individuare i PID che ti interessano, puoi usare Get-Process, che elenca tutti i processi con il loro identificatore.

Questo set di parametri è definito come obbligatorio nella posizione 0, il che significa che È possibile omettere il nome del parametro -Id e scrivi semplicemente i numeri, ad esempio: Stop-Process 3952Anche così, per usare espressamente -Id Di solito rende gli script più leggibili.

Arresta i processi per nome

Se non si desidera cercare i PID, è possibile specificare i processi tramite il loro nome eseguibile . La sintassi in questo caso è:

Sintassi (Nome): Stop-Process -Name <String[]>

Parametro -Name accetta uno o più nomi di processo (ad esempio, notepad, chrome…), e anche consente i caratteri jolly. Ad esempio, -Name fi* Arresterebbe tutti i processi i cui nomi iniziano con "fi", come "firefox".

Si noti che -Name è obbligatorio in questo set di parametri e ha un alias molto utile: Nome del processoInoltre, sebbene molte persone scrivano il nome con “.exe”, in pratica basta specificare il nome base (per esempio, notepad al posto di notepad.exe).

Arresta i processi che passano oggetti (InputObject)

In scenari più avanzati, è possibile utilizzare oggetti Process come input diretto per Stop-Process. È qui che entra in gioco il parametro -InputObject.

Sintassi (InputObject): Stop-Process <Process[]>

Con questo approccio, di solito si combinano Get-Process con l'operatore del gasdotto |, oppure pre-memorizzare il processo in una variabile e poi passarlo a Stop-Process. Questo set di parametri consente ingresso del tuboCiò lo rende molto flessibile quando si filtrano ed elaborano i dati prima di interrompere il processo.

Parametri chiave di Stop-Process e come utilizzarli correttamente

Oltre a specificare quali processi si desidera interrompere, Stop-Process include diversi parametri che controllano come viene eseguita l'azione e quali informazioni restituisce . Comprendere questi parametri vi eviterà spiacevoli sorprese e renderà i vostri script molto più chiari.

Parametro -Conferma

Il parametro `-Confirm` fa sì che PowerShell richieda conferma prima di eseguire il cmdlet . Si tratta di un parametro ` SwitchParameter` , il che significa che è possibile includerlo o meno, senza dovergli assegnare un valore.

Quando lo aggiungi, PowerShell visualizza un messaggio con l'azione che verrà eseguita (ad esempio, "Stop-Process") e la destinazione (il nome del processo e il suo PID), e offre opzioni tipiche come Sì, Sì a tutti, No , ecc. Questo comportamento è molto utile quando si arrestano processi critici o più processi contemporaneamente e si desidera esaminare ciascun caso singolarmente.

  Metodi per rimuovere il pulsante del microfono dalla tastiera dell'iPhone

Per impostazione predefinita, il valore di -Confirm è False , il che significa che non viene richiesta una conferma esplicita a meno che i criteri di conferma del cmdlet non la richiedano per operazioni sensibili. Esiste anche un alias per questo parametro: cf , sebbene l'utilizzo del nome completo sia molto più leggibile.

Parametro -Forza

Con -Force si indica a Stop-Process di interrompere i processi specificati senza chiedere conferma , anche quando non sono di proprietà dell'utente corrente e in situazioni in cui PowerShell normalmente sarebbe più prudente.

Internamente, `-Force` è anche un SwitchParameter senza valore predefinito (`None`) e viene utilizzato per sopprimere le richieste interattive nei processi che normalmente richiederebbero una conferma. Questo è molto utile negli script automatizzati in cui non si desidera che una finestra di conferma blocchi lo script in attesa dell'input dell'utente.

Se si desidera sapere chi è il proprietario di un determinato processo , è possibile utilizzare Get-CimInstance sulla classe WMI Win32_Process e il relativo metodo GetOwner . In questo modo, è possibile decidere se forzare o meno la terminazione in base all'utente che lo sta eseguendo.

Parametro -PassThru

Per impostazione predefinita, Stop-Process non restituisce nulla a schermo . Ovvero, se il cmdlet ha esito positivo, non visualizza alcun output. Se si desidera che, oltre all'arresto del processo, venga restituito anche l'oggetto processo interrotto , in modo da poterlo visualizzare o continuare a lavorarci in una pipeline, utilizzare il parametro -PassThru.

Questo parametro, anch'esso di tipo SwitchParameter, fa sì che il cmdlet emetta un oggetto Process che rappresenta il processo appena arrestato. Ciò è utile, ad esempio, per visualizzare l'utilizzo della memoria, l'utilizzo della CPU o altre proprietà del processo immediatamente prima della sua terminazione, oppure per concatenare altre operazioni con tale oggetto.

Parametro -WhatIf

Il parametro `-WhatIf` è di grande aiuto quando si lavora con comandi potenzialmente pericolosi. Aggiungendolo, si impedisce a `Stop-Process` di eseguire l'azione effettiva ; al suo posto, viene visualizzato un messaggio che indica cosa accadrebbe se il cmdlet venisse eseguito.

In questo modo, è possibile simulare l'arresto di massa dei processi senza modificare nulla , rivedere l'elenco dei destinatari e, quando si è certi, rimuovere `-WhatIf` ed eseguire il comando effettivo. Per script complessi o destinati all'ambiente di produzione, è buona norma utilizzare questo metodo durante la fase di test.

Altri parametri e parametri comuni

Oltre ai propri parametri, Stop-Process supporta i CommonParameters di PowerShell , come -Debug, -ErrorAction, -ErrorVariable, -Verbose, -WarningAction e -OutVariable, tra gli altri. Questi parametri consentono di controllare la gestione degli errori, il livello di dettaglio visualizzato e la propagazione dei dati all'interno dello script.

Ad esempio, è possibile utilizzare -ErrorAction SilentlyContinue per impedire la visualizzazione degli errori quando si tenta di interrompere un processo inesistente, il che è molto utile quando si desidera che uno script continui senza elementi visivi di disturbo.

Esempi pratici con Stop-Process

Dopo aver esaminato la sintassi e i parametri, la cosa più utile da fare è dare un'occhiata ad esempi di utilizzo reali . Ecco alcuni casi tipici che ti aiuteranno a padroneggiare il cmdlet nel tuo lavoro quotidiano.

Arresta tutte le istanze di un processo in base al nome

Se si desidera chiudere tutte le finestre di Blocco note contemporaneamente, è possibile specificare il nome del processo con -Name:

Comando rapido: Stop-Process -Name "notepad"

Questo comando individua tutte le istanze di Blocco note in esecuzione sul computer e le arresta. Ogni finestra di Blocco note è un processo separato, quindi le chiuderai tutte contemporaneamente senza doverle chiudere una per una.

Se voleste fare la stessa cosa tramite ID, dovreste elencare manualmente tutti i PID di ogni istanza , il che è molto più macchinoso. Ecco perché `-Name` è così comodo quando non vi interessa quale istanza specifica viene chiusa, purché appartengano tutte alla stessa applicazione.

Arresta un'istanza specifica di un processo con conferma

Immagina di avere diverse finestre dello stesso programma e di voler chiudere solo una in particolare . Se conosci il suo PID, puoi usare Stop-Process insieme a -Confirm e -PassThru per avere il pieno controllo:

Esempio con -Conferma: Stop-Process -Id 3952 -Confirm -PassThru

Con questo comando, PowerShell visualizzerà un messaggio di conferma che include il nome del processo (ad esempio, "notepad") e il suo PID (3952). Dopo aver accettato, il cmdlet arresterà quella specifica istanza e, grazie all'opzione -PassThru, restituirà l'oggetto processo con proprietà quali handle, memoria utilizzata, tempo CPU, ecc.

Senza il parametro -PassThru, il comando svolgerebbe il suo compito ma non vedresti nulla sullo schermo , il che può essere sconcertante se ti aspetti una sorta di conferma visiva di cosa esattamente è stato interrotto.

Arresta un processo utilizzando un oggetto e controlla quali sono stati completati.

È anche possibile lavorare con i processi come oggetti, sfruttando la tipica pipeline di PowerShell. Ad esempio, per avviare la calcolatrice, arrestarla e vedere quali processi sono terminati , si potrebbe fare qualcosa del genere:

Flusso di lavoro: calc
$p = Get-Process -Name "calc"
Stop-Process -InputObject $p
Get-Process | Where-Object { $_.HasExited }

In questo flusso, si apre prima la calcolatrice, quindi si utilizza Get-Process per ottenere il processo "calc" e memorizzarlo nella variabile $p . Successivamente, si chiama Stop-Process passando tale variabile tramite -InputObject , che arresta quella specifica istanza.

Infine, si esegue un Get-Process e si filtra con Where-Object i processi la cui proprietà HasExited è $true . Questa proprietà fa parte degli oggetti Process e indica quali processi sono stati arrestati . Se si desidera visualizzare tutte le proprietà disponibili in questi oggetti, è possibile utilizzare il classico Get-Process | Get-Member.

Visualizza le proprietà: Get-Process | Get-Member

Arresta i processi che richiedono privilegi di amministratore

Esistono processi di sistema, come lsass , che possono essere interrotti solo dai membri del gruppo Administrators, e anche in questo caso si tratta di un'operazione molto delicata. Se si tenta di terminare uno di questi processi da una normale sessione di PowerShell, verrà visualizzato un messaggio di accesso negato.

  Suggerimenti per correggere l'errore "iTunes Library.itl" Impossibile apprendere

Comando sensibile: ad esempio, qualcosa del genere:

Comando (privilegiato): Get-Process -Name "lsass" | Stop-Process

In una sessione standard, questo comando non andrà a buon fine, indicando che non è possibile interrompere il processo a causa di autorizzazioni insufficienti. Se si apre PowerShell come amministratore e si ripete il comando, il sistema potrebbe richiedere una conferma prima di procedere, avvertendo che si tratta di un'operazione delicata.

Comando (privilegiato — Forza): Get-Process -Name "lsass" | Stop-Process -Force

PowerShell procederà quindi a interrompere il processo senza richiedere conferma. Ovviamente, questo tipo di azione non è consigliata a meno che non si sappia esattamente cosa si sta facendo , perché si potrebbe rendere Windows instabile o causare un riavvio imprevisto.

Integrazione di Stop-Process con altri cmdlet di PowerShell

PowerShell dà il meglio di sé quando si iniziano a combinare i cmdlet. Stop-Process spesso si abbina perfettamente a Get-Process , ma anche ad altri come Where-Object, Select-Object, Out-File e molti altri. Questo permette di creare script potenti per il monitoraggio e la gestione automatica dei processi.

Un esempio tipico è l'elenco dei processi con Get-Process , l'applicazione di filtri basati su nome, utente o consumo di risorse e il successivo instradamento dei risultati a Stop-Process per chiudere solo i processi necessari. È anche possibile generare elenchi di processi in file di testo con Out-File o convertirli in HTML con ConvertTo-HTML per ottenere report visivamente più accattivanti.

Ad esempio, è possibile utilizzare Get-Process -IncludeUserName per ottenere informazioni sull'utente proprietario di ciascun processo e quindi applicare Where-Object per selezionare solo quelli che appartengono a un utente specifico o che corrispondono a un modello nel nome.

È anche comune combinare tutto ciò con script che gestiscono i log , come quelli che scrivono su file .log utilizzando `Write-Output` ogni volta che un processo specifico viene terminato, registrando la data, l'utente e il motivo. Questo fornisce una cronologia delle azioni amministrative eseguite da PowerShell.

Arresto condizionale dei processi negli script avanzati

In ambienti reali, a volte non si desidera semplicemente "terminare tutto ciò che si muove", ma piuttosto applicare una logica condizionale . Un esempio molto utile è uno script che verifica se determinati processi (ad esempio, "acslaunch_win-32" e "java") sono in esecuzione per un utente specifico e decide se arrestare o meno java.exe in base alla presenza dell'altro processo.

Questi tipi di script di solito iniziano ottenendo il utente corrente con strumenti come whoami.exe e manipolando quella stringa per estrarre solo il nome utente, senza il dominio. Da lì, viene utilizzato Get-Process -IncludeUserName per elencare i processi insieme all'utente associato e filtrare quelli che appartengono all'utente desiderato.

Nell'esempio descritto, i risultati dei processi vengono memorizzati in file di testo normale sul desktop dell'utente, vengono filtrati con Seleziona-stringa per individuare stringhe specifiche come "acslaunch_win-32" o "java" e, dopo aver pulito le righe vuote con espressioni come $_ .trim() -ne "", vengono ricaricati nelle variabili.

Da qui, la logica condizionale è semplice: se per quell'utente viene rilevato il processo "acslaunch_win-32", si presume che java.exe non debba essere modificato . Se "acslaunch_win-32" non è presente ma "java" lo è, viene eseguita la seguente azione:

Chiudere Java se necessario: Get-Process -Name java | Stop-Process -Force

In tutti i casi, lo script registra l'accaduto in un file di log (ad esempio, in C:\Scripts\kill-java-as400.log), indicando se Java è stato terminato, se acslaunch_win-32 era presente o se non è stato trovato alcun processo rilevante. Al termine, i file temporanei creati sul desktop vengono eliminati.

Queste tipologie di soluzioni illustrano molto bene come Stop-Process si integri in flussi di lavoro più complessi , dove non conta solo l'ordine di terminazione dei processi, ma anche chi li esegue, quali altri processi sono correlati e in quali condizioni devono essere chiusi.

Stop-Process e altri metodi per terminare i processi in Windows

In Windows, esistono diversi modi per terminare i processi dalla riga di comando. Il metodo più vecchio in CMD è... taskkillche consente di chiudere i processi sia tramite PID che tramite nome, utilizzando parametri come /PID, /IM e il classico /F forzare.

Attività (taskkill — PID): Ad esempio, è possibile utilizzare:

taskkill (PID): taskkill /F /PID 4027

Attività (taskkill — IM): oppure:

taskkill (IM): taskkill /F /IM notepad.exe

Questo approccio è valido e funziona da Windows XP in poi, ma PowerShell offre un modo di lavorare molto più ricco e orientato agli oggetti . Con Stop-Process non solo si terminano i processi, ma è anche possibile integrarlo con il resto dell'ecosistema dei cmdlet per filtrare, registrare, formattare i risultati e automatizzare attività complesse.

Filtro avanzato: ad esempio, in PowerShell puoi digitare qualcosa del genere:

Filtro e chiusura: Get-Process -Name "notepad" | Where-Object { $_.CPU -gt 10 } | Stop-Process -Force

In questo modo si interrompono solo le istanze di Blocco note che soddisfano una determinata condizione (ad esempio, più di 10 secondi di utilizzo della CPU), cosa che con taskkill sarebbe molto più complicata o addirittura impossibile senza script ausiliari.

Alias ​​e comandi relativi a Stop-Process

PowerShell spesso fornisce alias per molti dei suoi comandi , permettendo di scriverne versioni più brevi. Stop-Process non fa eccezione: su molti sistemi è possibile utilizzare `kill` o `spps` come alias per il cmdlet.

Alias ​​​​(kill): Ad esempio, invece di scrivere la forma completa, potresti fare:

Alias ​​(uccidi — esempio): kill -Name notepad

Alias ​​​​(spps — esempio): oppure:

Alias ​​(spps): spps -Id 3952

Questi alias sono particolarmente utili per il lavoro interattivo da console , sebbene negli script sia generalmente consigliabile scrivere il nome completo del cmdlet in modo che il codice sia più chiaro e più facile da comprendere per tutti.

  Come inizializzare un nuovo disco rigido che non appare in Esplora file

Elenco dei cmdlet: Oltre a Stop-Process, è comune utilizzare insieme ad esso altri cmdlet relativi ai processi, come ad esempio:

  • Get-Process: elenca i processi e mostra i dettagli di ciascuno di essi.
  • Inizio-Processo: avvia nuovi processi o programmi.
  • Processo di debug: consente il debug dei processi in esecuzione utilizzando debugger esterni.

Esecuzione con Start-Process: Con Start-Process, ad esempio, è possibile avviare applicazioni semplicemente specificandone il nome, come:

Avviare il processo: Start-Process notepad.exe

Combinando le funzioni Start-Process e Stop-Process negli script, è possibile avviare, monitorare e arrestare i processi in modo completamente automatizzato, ideale per test, manutenzione o gestione di servizi interni.

Gestione dei processi di base con PowerShell: Get-Process e Stop-Process

Per molti utenti abituati alle interfacce grafiche, entrare nel mondo di PowerShell rappresenta un vero e proprio salto. Tuttavia, alcuni cmdlet come Get-Process e Stop-Process sono piuttosto intuitivi e consentono di gestire i processi senza troppe difficoltà.

Se apri PowerShell (ad esempio, dal menu Start o premendo Win + R e digitando "powershell"), puoi elencare tutti i processi attivi semplicemente digitando:

Elenca i processi: Get-Process

Output paginato: Get-Process | more

Filtro jolly: Get-Process -Name fi*

Se devi visualizzare tutte le proprietà di un processo specifico, come ad esempio "explorer", puoi inviare l'output a Format-List :

Mostra tutte le proprietà: Get-Process -Name explorer | Format-List *

Una volta individuate le informazioni necessarie, è possibile interrompere i processi con Stop-Process, ad esempio:

Chiudi per nome: Stop-Process -Name firefox*

Questo arresterà tutti i processi di Firefox. Se preferisci utilizzare l'ID del processo anziché il nome, puoi digitare qualcosa come:

ID vicino: Stop-Process -Id 6928

E, se si desidera che il cmdlet richieda conferma prima di procedere, è possibile aggiungere il parametro -Confirm:

Chiusura con conferma: Stop-Process -Name Calculator -Confirm

Questo approccio è molto comodo per chi proviene dall'interfaccia grafica e desidera iniziare a gestire i processi senza dover utilizzare il mouse.

Gestione degli errori durante l'eliminazione dei processi: elimina i messaggi se il processo non esiste

Uno scenario molto comune è quello di tentare di terminare un processo che potrebbe non essere in esecuzione in quel momento . Con Stop-Process, se si tenta di interrompere un processo inesistente, si riceverà un messaggio di errore che, in alcuni contesti (ad esempio, script automatizzati), può risultare fastidioso.

Un modo semplice per evitare questi errori visibili è verificare prima se il processo esiste . Ad esempio, chi desidera arrestare Chrome potrebbe digitare qualcosa del genere:

Tentativo (Chrome): Stop-Process -Name "chrome"

Se Chrome non è aperto, verrà generato un errore. Per evitarlo, è possibile utilizzare Get-Process con l' opzione -ErrorAction (abbreviata in -EA) ed eseguire Stop-Process solo se il processo viene trovato.

Verifica sicura: if ((Get-Process -Name "chrome" -EA 0)) { Stop-Process -Name "chrome" -Force }

In questo esempio, -EA 0 è equivalente a -ErrorAction SilentlyContinue , che sopprime il messaggio di errore se il processo non esiste. L' istruzione if verifica se la chiamata a Get-Process restituisce un valore e solo in tal caso viene chiamato Stop-Process. Ciò garantisce che non vengano visualizzati errori non necessari sullo schermo.

Questa tecnica può essere riutilizzata per qualsiasi altro processo che si desidera terminare silenziosamente e senza errori visibili , ideale per script che vengono eseguiti a intervalli regolari.

Stop-Process nell'ecosistema dei comandi di PowerShell

PowerShell non si limita al comando Stop-Process: è un ambiente di automazione completo con centinaia di cmdlet organizzati secondo lo schema verbo-nome (Get-Process, Restart-Computer, Clear-Content, ecc.). Comprendere questo contesto aiuta a vedere Stop-Process come un tassello di un puzzle molto più grande.

Ad esempio, con Get-Command è possibile elencare tutti i cmdlet disponibili, mentre con Get-Help si possono visualizzare informazioni dettagliate su ciascuno di essi, inclusi esempi di utilizzo e sintassi completa. Per lavorare con i processi, oltre a Stop-Process, sono molto utili Get-Process , Debug-Process o anche strumenti di monitoraggio come Get-Counter.

Altri cmdlet come ConvertTo-HTML o ConvertTo-Xml consentono di formattare i risultati dei comandi in HTML o XML , il che può essere molto utile per generare report di processi, servizi o eventi. Con Out-File, invece, è possibile salvare direttamente l'output delle query in file di testo.

Nell'ambito dell'amministrazione di sistema, comandi come Get-Service e Set-Service vengono utilizzati per gestire i servizi, Restart-Computer per i riavvii controllati e Get-ComputerInfo per ottenere informazioni dettagliate sul sistema. Tutti questi comandi possono essere combinati in script in cui Stop-Process svolge un ruolo chiave quando è necessario chiudere applicazioni o processi problematici.

In definitiva, il vero potenziale di Stop-Process emerge quando lo si utilizza in combinazione con altri cmdlet, sfruttando il filtraggio con Where-Object, la selezione con Select-Object e l'automazione con ForEach-Object , solo per citare alcuni esempi. Questo permette di passare dalla semplice interruzione di processi isolati alla gestione dell'intero sistema.

Padroneggiare Stop-Process e i suoi parametri, capire come si combina con Get-Process, sapere quando usare -Confirm, -Force, -PassThru o -WhatIf e imparare a integrarlo in script che gestiscono elegantemente errori e log ti pone in un livello completamente diverso quando si tratta di gestire Windows da PowerShell , superando di gran lunga i limiti del classico CMD o del semplice Task Manager.

Come interrompere i processi in Windows con il comando taskkill-4
Articolo correlato:
Come interrompere i processi in Windows con il comando taskkill