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 cmdlet Stop-Process 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 sui processi in esecuzione nel computer locale.
In Windows Vista e versioni successive del sistema operativo Windows, per arrestare un processo non di proprietà dell'utente corrente, è necessario avviare PowerShell usando l'opzione Esegui come amministratore. Non viene inoltre richiesta la conferma, 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 del 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 conferma 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 comando Stop-Process .
Esempio 3: Arrestare un processo e rilevare che è stato arrestato
PS C:\> calc
PS C:\> $p = Get-Process -Name "calc"
PS C:\> Stop-Process -InputObject $p
PS C:\> Get-Process | Where-Object {$_.HasExited}
Questa serie di comandi avvia e arresta il processo Calc 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 processo Calc e lo archivia nella variabile $p.
Il terzo comando arresta il processo Calc. 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.
Usa Get-Process per ottenere tutti i processi nel computer.
L'operatore pipeline (|) passa i risultati al cmdlet Where-Object, che seleziona quelli in cui viene $True il valore della proprietà HasExited .
HasExited è solo una proprietà degli oggetti di processo.
Per trovare tutte le proprietà, digitare Get-Process | Get-Member
.
Esempio 4: Arrestare un processo non di proprietà dell'utente corrente
PS C:\> 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 C:\> 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 C:\> Get-Process -Name "lsass" | Stop-Process -Force
[ADMIN]: PS C:\>
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 Stop-Process per 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 la conferma dell'utente prima di eseguire il cmdlet.
Type: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | 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 cmdlet Get-WmiObject per ottenere un oggetto Win32_Process che rappresenta il processo e quindi usare il metodo GetOwner dell'oggetto .
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Id
Specifica gli ID del processo da arrestare.
Per specificare più ID, separarli con la virgola.
Per trovare il PID di un processo, digitare Get-Process
.
Type: | Int32[] |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | 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.
Type: | Process[] |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Name
Specifica i nomi dei processi da arrestare. È possibile digitare più nomi di processo, separati da virgole o usare caratteri jolly.
Type: | String[] |
Aliases: | ProcessName |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | True |
-PassThru
Restituisce un oggetto che rappresenta il processo. Per impostazione predefinita, il cmdlet non genera alcun output.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-WhatIf
Mostra l'esito in caso di esecuzione del cmdlet. Il cmdlet non viene eseguito.
Type: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Input
È possibile inviare tramite pipe un oggetto processo a questo cmdlet.
Output
None, System.Diagnostics.Process
Questo cmdlet restituisce un oggetto System.Diagnostics.Process che rappresenta il processo arrestato, se si specifica il parametro PassThru . In caso contrario, il cmdlet non genera alcun output.
Note
È anche possibile fare riferimento a Stop-Process tramite gli alias predefiniti, kill e spps. Per altre informazioni, vedere about_Aliases.
È anche possibile utilizzare le proprietà e i metodi dell'oggetto Strumentazione gestione Windows (WMI) Win32_Process in Windows PowerShell. Per altre informazioni, vedere Get-WmiObject 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.