Condividi tramite


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

Process

È 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.