Forse stai lavorando felicemente su un server remoto Windows, poi trovi un processo che si comporta in modo errato utilizzando preziose risorse CPU. Cosa fai? Uccidilo!
In questo tutorial, imparerai come terminare un processo Windows utilizzando strumenti nativi, strumenti di terze parti e PowerShell. Imparerai prima come esaminare i processi in esecuzione in Windows e poi come terminare i processi in esecuzione.
Prerequisiti
Se vuoi seguire i passaggi di questo tutorial, assicurati di aver preparato quanto segue in anticipo:
- A Windows PC – All demos in this tutorial will use Windows 10, but Windows 7+ will work also.
- A Windows Server or another Windows desktop to use as your target for killing the remote tasks. This tutorial uses a standalone Windows Server 2016 as the remote server.
- La Suite Sysinternals di Microsoft.
- Windows PowerShell 5 o versione successiva. Questo tutorial utilizza PowerShell v7.1.3
Interrogare un processo Windows remoto con Tasklist
Dal sistema operativo Windows XP, esiste uno strumento utile chiamato tasklist. Tasklist è uno strumento molto utile che consente di interrogare i processi su computer remoti. Prima di poter terminare un processo, devi prima scoprirlo!
Apri una sessione di PowerShell o il prompt dei comandi sul tuo desktop e digita il seguente comando per visualizzare tutti i processi in esecuzione sul tuo computer remoto.
Il comando di seguito interroga un computer remoto (/S
) autenticando la connessione con il nome utente amministratore (/U
) e la password (/P
).
Noterai qui sotto che il Nome Sessione non appare. Poiché stai eseguendo tasklist
su un computer remoto, tasklist
non fornisce il Nome Sessione.

Forse preferisci elencare solo un singolo processo. Nessun problema. Per farlo, specifica il parametro /FI
. Il parametro /FI
accetta una query che viene passata al tasklist
per filtrare processi specifici.

Interrogazione dei processi Windows remoti con PSList
Un altro strumento per visualizzare i processi in esecuzione è PSList, e questa utility fa parte della Suite Sysinternals. Questa suite di strumenti esiste da molti anni ed è stata creata da Mark Russinovich, CTO di Azure!
Cominciamo a vedere come è possibile visualizzare i processi in esecuzione su un computer remoto.
1. Apri una sessione di PowerShell o un prompt dei comandi sul tuo desktop e cambia la directory in quella in cui hai estratto la Suite Sysinternals.
2. Nella tua sessione di PowerShell, esegui il seguente comando per visualizzare i processi in esecuzione sul computer remoto e l’utilizzo della CPU associato in tempo reale.
Il comando seguente esegue pslist
per interrogare tutti i processi remoti di Windows sul computer WIN-BANGJIEFNOC
autenticando l’utente Administrator
(con -u
) e la password (con -p
).
Il comando utilizza l’opzione -s
per attivare la modalità “task manager” di pslist
, che aggiorna continuamente l’elenco.
Se è la prima volta che si utilizza uno strumento Sysinternals, potrebbe comparire un banner che chiede di accettare l’ EULA; clicca su OK.
Ora vedrai l’output seguente dall’esecuzione di quel comando; per questo articolo, ti interesserai a 3 di questi valori. Come mostrato di seguito.
- Nome: Il nome del processo.
- Pid: Identificatore di processo, un valore critico usato in questo tutorial; il numero PID può essere usato per terminare un processo remoto. È l’ID numerico assegnato a un processo.
- CPU: Mostra in tempo quasi reale l’utilizzo complessivo della CPU disponibile.
Gli altri valori sono relativi alla memoria e esulano dallo scopo di questo articolo.

3. Poiché il passo due ha utilizzato l’opzione -s
, premi Ctrl-C per uscire da pslist
e tornare alla console.
Riduci l’elenco dei processi restituiti utilizzando l’opzione
-e
seguita dal nome del processo, ad esempio,-e Winlogon
.
Uccidere i Processi per Nome con PSKill
Una volta che sai come individuare i processi remoti, passiamo ora a come ucciderli. Per iniziare, vediamo la pskill utility. Prima di tutto, impara come uccidere i processi per nome.
1. Assicurati di avere un processo che puoi terminare sul tuo server remoto. Questo tutorial utilizzerà il processo Notepad.
2. Apri una sessione di PowerShell o il prompt dei comandi sul tuo desktop locale e cambia la directory in quella in cui hai estratto Sysinternal Suite. Esegui quindi il seguente comando. Puoi vedere che la sintassi per pskill
è simile a pslist
.

3. Ora, esegui pslist
, come spiegato nella sezione precedente, per confermare che il processo sia effettivamente interrotto.

Uccidere i Processi per ID del Processo con PSKill
Uccidere il processo per nome potrebbe essere sufficiente per le tue esigenze se è in esecuzione solo un’istanza di quel processo o se desideri uccidere tutti i processi con quel nome. Ma cosa fare se vuoi uccidere una particolare istanza di un processo in esecuzione? I seguenti passaggi lo dimostreranno.
1. Sul tuo server remoto, apri Notepad due volte; ucciderai uno di questi processi in questa dimostrazione; naturalmente, puoi sostituire altri processi.
2. Esegui il seguente comando, facendo attenzione a uno dei Pid come mostrato di seguito; ne avrai bisogno per il passo successivo.

3. Utilizzando il PID, esegui ora pskill
, fornendo il PID come ultimo argomento.

4. Infine, verifica che tu abbia ancora un’istanza di Notepad in esecuzione rieseguendo pslist
. Dovresti ora vedere solo una singola istanza di Notepad in esecuzione.

Uccidere i processi remoti di Windows con TaskKill per nome
Il comando taskkill è nativo di Windows e include ulteriori opzioni da riga di comando per riavviare i processi per nome utente e nome dell’applicazione. Iniziamo e uccidiamo di nuovo Notepad!
Uccidi il processo per nome
1. Sul tuo server remoto, apri Notepad; Notepad è il processo che ucciderai in questa dimostrazione; naturalmente, puoi sostituire un altro processo.
2. Apri una sessione PowerShell o il prompt dei comandi sul tuo desktop. Digitando il seguente comando ucciderai notepad.exe
L’output è mostrato di seguito:
/IM è il parametro per Image; in questo caso, è notepad.exe

3. Per confermare che il processo è interrotto, esegui tasklist
. Ora dovresti vedere che nessun task corrisponde a quel filtro.

Uccidere i processi remoti di Windows con TaskKill per PID
Uccidere un processo con taskkill
usando un PID non è molto diverso dall’uso del nome del processo. Ma, poiché non puoi usare il nome, dovrai prima trovare il PID e poi passarlo a taskkill
.
Assumendo che Notepad sia in esecuzione sul tuo host remoto Windows:
1. Esegui il comando tasklist
come mostrato di seguito per trovare il PID del processo Notepad. Prendi nota di uno dei PID come indicato di seguito; ne avrai bisogno per il passo successivo.

2. Ora, esegui il comando taskkill
fornendo il PID come ultimo argomento.

3. Infine, esegui tasklist
per confermare che il processo sia stato interrotto.

Uccidere un processo remoto di Windows con PowerShell
PowerShell ti offre un paio di opzioni per uccidere processi remoti; il primo cmdlet Stop-Process
non può nativamente uccidere un processo remoto, poiché non ha un’opzione per specificare un nome computer. Ma puoi aggirare questo problema eseguendo Stop-Process
in remoto tramite PowerShell Remoting.
1. Se il tuo host e il server remoto non sono in un dominio Active Directory, fornisci prima un nome utente e una password, creando un oggetto PSCredential.

2. Successivamente, poiché il tutorial utilizzerà SSL per connettersi al computer remoto e utilizzerà un certificato autenticato, crea un PSSessionOption che ignorerà il controllo del certificato per un’autorità di certificazione affidabile.
3. Ora, connettiti al server con il comando Enter-PSSession
, che stabilisce una sessione interattiva con il server remoto.
Il comando di seguito si sta connettendo al computer WIN-BANGJIEFNOC.local.net
utilizzando il nome utente e la password forniti sopra (Credential
), saltando il controllo dell’autorità di certificazione (SessionOption
), e connettendosi tramite SSL (UseSSL
).

4. Una volta connesso all’host remoto, controlla il processo che desideri terminare eseguendo Get-Process
. In questo caso, vedrai il processo notepad
.

5. Per terminare questo processo, esegui Stop-Process
, come mostrato di seguito.
6. Infine, conferma di aver terminato il processo eseguendo nuovamente Get-Process
, e dovresti ricevere un messaggio di errore.

Se desideri interrompere un processo remoto di Windows in modo non interattivo, utilizza il comando
Invoke-Command
utilizzando i seguenti parametri:Invoke-Command -ComputerName WIN-BANGJIEFNOC.local.net -Credential $credentials -ScriptBlock {Stop-Process -ProcessName notepad} -UseSSL
. Incapsulare il comandoStop-Proces
nel parametroScriptBlock
invia il comando all’host remoto.
Conclusioni
Hai appreso metodi diversi per terminare processi remoti e come superare situazioni in cui le regole del firewall di rete potrebbero impedire il corretto funzionamento degli strumenti; questo tutorial potrebbe anche averti aiutato a risolvere problemi su Windows.
Gli strumenti di cui hai appreso sono potenti; usali con attenzione!
Source:
https://adamtheautomator.com/how-to-kill-a-windows-process/