Arresta uno o più processi in esecuzione.

Sintassi

Stop-Process [-Id] <Int32[]> [-Force] [-PassThru] [-Confirm] [-WhatIf] [<CommonParameters>]

Stop-Process -InputObject <Process[]> [-Force] [-PassThru] [-Confirm] [-WhatIf] [<CommonParameters>]

Stop-Process -Name <string[]> [-Force] [-PassThru] [-Confirm] [-WhatIf] [<CommonParameters>]

Descrizione

Tramite il cmdlet Stop-Process viene arrestato uno o più processi in esecuzione. È possibile specificare un processo tramite il nome del processo o l'ID processo (PID) oppure passare un oggetto processo a Stop-Process. Stop-Process può essere utilizzato solo con processi in esecuzione sul computer locale.

In Windows Vista e nelle versioni successive di Windows, per arrestare un processo non appartenente all'utente corrente, è necessario avviare Windows PowerShell con l'opzione "Esegui come amministratore". Viene inoltre richiesta una conferma a meno che non si utilizzi il parametro Force.

Parametri

-Force

Arresta i processi specificati senza richiedere una conferma. Per impostazione predefinita, Stop-Process richiede una conferma prima di arrestare qualsiasi processo non appartenente all'utente corrente.

Per trovare il proprietario di un processo, utilizzare il cmdlet Get-WmiMethod per ottenere un oggetto Win32_Process che rappresenta il processo, quindi utilizzare il metodo GetOwner dell'oggetto.

Obbligatorio?

false

Posizione?

named

Valore predefinito

False

Accettare input da pipeline?

false

Accettare caratteri jolly?

false

-Id <Int32[]>

Specifica gli ID dei processi da arrestare. Per specificare più ID, separarli tramite virgole Per trovare il PID di un processo, digitare "Get-Process". Il nome del parametro ("Id") è facoltativo.

Obbligatorio?

true

Posizione?

1

Valore predefinito

Accettare input da pipeline?

true (ByPropertyName)

Accettare caratteri jolly?

false

-InputObject <Process[]>

Arresta i processi rappresentati dagli oggetti processo specificati. Immettere una variabile contenente gli oggetti oppure digitare un comando o un'espressione che consente di ottenere gli oggetti.

Obbligatorio?

true

Posizione?

named

Valore predefinito

Accettare input da pipeline?

true (ByValue)

Accettare caratteri jolly?

false

-Name <string[]>

Specifica i nomi dei processi da arrestare. È possibile digitare più nomi di processo, separati da virgole, oppure utilizzare caratteri jolly.

Obbligatorio?

true

Posizione?

named

Valore predefinito

Accettare input da pipeline?

true (ByPropertyName)

Accettare caratteri jolly?

false

-PassThru

Restituisce un oggetto che rappresenta il processo. Per impostazione predefinita, il cmdlet non genera alcun output.

Obbligatorio?

false

Posizione?

named

Valore predefinito

Accettare input da pipeline?

false

Accettare caratteri jolly?

false

-Confirm

Chiede una conferma prima di eseguire il comando.

Obbligatorio?

false

Posizione?

named

Valore predefinito

Accettare input da pipeline?

false

Accettare caratteri jolly?

false

-WhatIf

Descrive ciò che accadrebbe se si eseguisse il comando senza eseguirlo realmente.

Obbligatorio?

false

Posizione?

named

Valore predefinito

Accettare input da pipeline?

false

Accettare caratteri jolly?

false

<CommonParameters>

Questo cmdlet supporta i parametri comuni -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer e -OutVariable. Per ulteriori informazioni, vedere about_Commonparameters.

Input e output

Il tipo di input è il tipo degli oggetti che è possibile reindirizzare al cmdlet. Il tipo restituito è il tipo degli oggetti restituiti dal cmdlet.

Input

System.Diagnostics.Process

È possibile reindirizzare un oggetto processo a Stop-Process.

Output

Nessuno o System.Diagnostics.Process

Quando si utilizza il parametro PassThru, Stop-Process restituisce un oggetto System.Diagnostics.Process che rappresenta il processo arrestato. Negli altri casi, il cmdlet non genera alcun output.

Note

È inoltre possibile fare riferimento a Stop-Process tramite i relativi alias predefiniti "kill" e "spps". Per ulteriori informazioni, vedere about_Aliases.

È inoltre possibile utilizzare le proprietà e i metodi dell'oggetto Win32_Process di Strumentazione gestione Windows (WMI) in Windows PowerShell. Per ulteriori informazioni, vedere Get-WmiObject e l'SDK di WMI.

Quando si arresta un processo, tenere presente che questa operazione può causare l'arresto del processo e dei servizi che ne dipendono. In casi estremi, l'arresto di un processo può comportare l'arresto di Windows.

Esempio 1

C:\PS>stop-process -name notepad

Descrizione
-----------
Tramite questo comando vengono arrestate tutte le istanze del processo Blocco note nel computer. Ogni istanza del Blocco note viene eseguita nel proprio processo. Il parametro Name viene utilizzato per specificare i processi, che hanno tutti lo stesso nome. Se si utilizzasse il parametro ID per arrestare gli stessi processi, sarebbe necessario elencare gli ID processo di ogni istanza del Blocco note.






Esempio 2

C:\PS>stop-process -id 3952 -confirm -passthru

Confirm
Are you sure you want to perform this action?
Performing operation "Stop-Process" on Target "notepad (3952)".
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help
(default is "Y"):y
Handles  NPM(K)    PM(K)      WS(K) VM(M)   CPU(s)     Id ProcessName
-------  ------    -----      ----- -----   ------     -- -----------
     41       2      996       3212    31            3952 notepad

Descrizione
-----------
Tramite questo comando viene arrestata un'istanza specifica del processo Blocco note. Viene utilizzato l'ID processo, 3952, per identificare il processo. Il parametro Confirm reindirizza Windows PowerShell a richiedere la conferma dell'utente prima dell'arresto del processo. Poiché il prompt include il nome del processo, nonché il relativo ID, questa è la procedura ottimale. Il parametro PassThru passa l'oggetto processo al formattatore per la visualizzazione. Senza questo parametro, la visualizzazione non sarebbe possibile dopo un comando Stop-Process.






Esempio 3

C:\PS>calc

c:\PS>$p = get-process calc

c:\PS>stop-process -inputobject $p

c:\PS>get-process | where-object {$_.HasExited}

Descrizione
-----------
Tramite questa serie di comandi viene avviato e arrestato il processo Calc e vengono rilevati i processi che sono stati arrestati. 

Tramite il primo comando ("calc") viene avviata un'istanza della calcolatrice. Tramite il secondo comando ("$p = get-process calc") viene utilizzato il cmdlet Get-Process per ottenere un oggetto che rappresenta il processo Calc e archiviarlo nella variabile $p. Tramite il terzo comando ("stop-process -inputobject $p") viene utilizzato il cmdlet Stop-Process per arrestare il processo Calc. Viene utilizzato il parametro InputObject per passare l'oggetto a Stop-Process. 

Tramite l'ultimo comando si ottengono tutti i processi che erano in esecuzione nel computer, ma che sono stati arrestati. Viene utilizzato il cmdlet Get-Process per ottenere tutti i processi nel computer. I risultati vengono passati dall'operatore pipeline (|) al cmdlet Where-Object, il quale seleziona solo quelli in cui il valore della proprietà HasExited è TRUE. HasExited è solo una proprietà degli oggetti processo. Per trovare tutte le proprietà, digitare "get-process | get-member".






Esempio 4

C:\PS>get-process lsass | stop-process

Stop-Process : Cannot stop process 'lsass (596)' because of the following error: Access is denied
At line:1 char:34
+ get-process lsass  | stop-process <<<<

[ADMIN]: C:\PS> get-process lsass | stop-process
Warning!
Are you sure you want to perform this action?
Performing operation 'Stop-Process' on Target 'lsass(596)'
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "Y"):

[ADMIN]: C:\PS> get-process lsass | stop-process -force
[ADMIN]: C:\PS>

Descrizione
-----------
Con questi comandi viene illustrato l'effetto dell'utilizzo del parametro Force per arrestare un processo che non appartiene all'utente.

Nel primo comando viene utilizzato il cmdlet Get-Process per ottenere il processo Lsass. Un operatore pipeline invia il processo al cmdlet Stop-Process per arrestarlo. Come illustrato nell'output di esempio, il primo comando ha esito negativo con messaggio "Accesso negato", perché questo processo può essere arrestato solo da un membro del gruppo Administrators del computer.

Quando Windows PowerShell viene aperto con l'opzione "Esegui come amministratore" e il comando viene ripetuto, viene chiesta la conferma.

Il secondo comando utilizza il parametro Force per eliminare il prompt. Di conseguenza, il processo viene arrestato senza conferma.






Vedere anche




Argomenti della Guida