Stop-Process
Arresta uno o più processi in esecuzione.
Sintassi
Stop-Process
[-Id] <Int32[]>
[-PassThru]
[-Force]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Stop-Process
-Name <String[]>
[-PassThru]
[-Force]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Stop-Process
[-InputObject] <Process[]>
[-PassThru]
[-Force]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Descrizione
Il Stop-Process
cmdlet arresta uno o più processi in esecuzione. È possibile specificare un processo in base al nome del processo o all'ID processo (PID) oppure passare un oggetto processo a Stop-Process
. Stop-Process
funziona solo nei processi in esecuzione nel computer locale.
In Windows Vista e versioni successive del sistema operativo Windows, per arrestare un processo che non appartiene all'utente corrente, è necessario avviare PowerShell usando l'opzione Esegui come amministratore. Inoltre, non viene richiesto di confermare, a meno che non si specifichi il parametro Confirm .
Esempio
Esempio 1: Arrestare tutte le istanze di un processo
PS C:\> Stop-Process -Name "notepad"
Questo comando arresta tutte le istanze del processo Blocco note nel computer Ogni istanza del Blocco note viene eseguita nel proprio processo. Usa il parametro Name per specificare i processi, tutti con lo stesso nome. Se si usa il parametro Id per arrestare gli stessi processi, è necessario elencare gli ID processo di ogni istanza del Blocco note.
Esempio 2: Arrestare un'istanza specifica di un processo
PS C:\> 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
Questo comando arresta una determinata istanza del processo Blocco note. Usa l'ID di processo 3952 per identificare il processo. Il parametro Confirm indica a PowerShell di richiedere prima di arrestare il processo. Poiché il prompt include il nome del processo oltre al relativo ID, questa è la procedura consigliata.
Il parametro PassThru passa l'oggetto processo al formattatore per la visualizzazione. Senza questo parametro, non verrà visualizzata alcuna visualizzazione dopo un Stop-Process
comando.
Esempio 3: Arrestare un processo e rilevare che è stato arrestato
calc
$p = Get-Process -Name "calc"
Stop-Process -InputObject $p
Get-Process | Where-Object {$_.HasExited}
Questa serie di comandi avvia e arresta il Calc
processo e quindi rileva i processi arrestati.
Il primo comando avvia un'istanza del calcolatore.
Il secondo comando usa Get-Process
ottiene un oggetto che rappresenta il Calc
processo e quindi lo archivia nella $p
variabile .
Il terzo comando arresta il Calc
processo. Usa il parametro InputObject per passare l'oggetto a Stop-Process
.
L'ultimo comando ottiene tutti i processi che erano in esecuzione nel computer ma che ora sono stati arrestati. Get-Process
Usa per ottenere tutti i processi nel computer. L'operatore pipeline (|
) passa i risultati al Where-Object
cmdlet , che seleziona 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: Arrestare un processo non di proprietà dell'utente corrente
PS> Get-Process -Name "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 -Name "lsass" | Stop-Process <<<<
[ADMIN]: PS> Get-Process -Name "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]: PS> Get-Process -Name "lsass" | Stop-Process -Force
[ADMIN]: PS>
Questi comandi mostrano l'effetto dell'uso di Force per arrestare un processo non di proprietà dell'utente.
Il primo comando usa Get-Process
per ottenere il processo Lsass. Un operatore pipeline invia il processo a per Stop-Process
arrestarlo. Come illustrato nell'output di esempio, il primo comando ha esito negativo con un messaggio di accesso negato, perché questo processo può essere arrestato solo da un membro del gruppo Administrator nel computer.
Quando PowerShell viene aperto usando l'opzione Esegui come amministratore e il comando viene ripetuto, PowerShell richiede la conferma.
Il secondo comando specifica Force per eliminare il prompt. Di conseguenza, il processo viene arrestato senza richiesta di conferma.
Parametri
-Confirm
Richiede conferma prima di eseguire il cmdlet.
Tipo: | SwitchParameter |
Alias: | cf |
Posizione: | Named |
Valore predefinito: | False |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-Force
Arresta i processi specificati senza chiedere conferma. Per impostazione predefinita, Stop-Process
richiede conferma prima di arrestare qualsiasi processo non di proprietà dell'utente corrente.
Per trovare il proprietario di un processo, usare il Get-CimInstance
cmdlet per ottenere un oggetto Win32_Process che rappresenta il processo e quindi utilizzare il metodo GetOwner dell'oggetto .
Tipo: | SwitchParameter |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-Id
Specifica gli ID processo dei processi da arrestare. Per specificare più ID, separarli con la virgola. Per trovare il PID di un processo, digitare Get-Process
.
Tipo: | Int32[] |
Posizione: | 0 |
Valore predefinito: | None |
Necessario: | True |
Accettare l'input della pipeline: | True |
Accettare caratteri jolly: | False |
-InputObject
Specifica gli oggetti di processo da arrestare. Immettere una variabile che contiene gli oggetti oppure digitare un comando o un'espressione che ottiene gli oggetti.
Tipo: | Process[] |
Posizione: | 0 |
Valore predefinito: | None |
Necessario: | True |
Accettare l'input della pipeline: | True |
Accettare caratteri jolly: | False |
-Name
Specifica i nomi dei processi da arrestare. È possibile digitare più nomi di processo, separati da virgole o usare caratteri jolly.
Tipo: | String[] |
Alias: | ProcessName |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | True |
Accettare l'input della pipeline: | True |
Accettare caratteri jolly: | True |
-PassThru
Restituisce un oggetto che rappresenta il processo. Per impostazione predefinita, il cmdlet non genera alcun output.
Tipo: | SwitchParameter |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-WhatIf
Mostra gli effetti dell'esecuzione del cmdlet. Il cmdlet non viene eseguito.
Tipo: | SwitchParameter |
Alias: | wi |
Posizione: | Named |
Valore predefinito: | False |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
Input
È possibile inviare tramite pipe un oggetto processo a questo cmdlet.
Output
None
Per impostazione predefinita, questo cmdlet non restituisce alcun output.
Quando si usa il parametro PassThru , questo cmdlet restituisce un oggetto Process che rappresenta il processo arrestato.
Note
Windows PowerShell include gli alias seguenti per Stop-Process
:
kill
spps
È anche possibile usare le proprietà e i metodi dell'oggetto Strumentazione gestione Windows (WMI) Win32_Process in Windows PowerShell. Per altre informazioni, vedere
Get-CimInstance
e WMI SDK.Quando si arrestano i processi, tenere presente che l'arresto di un processo può arrestare processi e servizi che dipendono dal processo. In casi estremi, l'arresto di un processo può provocare l'arresto di Windows.