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

Process

È possibile inviare tramite pipe un oggetto processo a questo cmdlet.

Output

None

Per impostazione predefinita, questo cmdlet non restituisce alcun output.

Process

Quando si usa il parametro PassThru , questo cmdlet restituisce un oggetto Process che rappresenta il processo arrestato.

Note

PowerShell include gli alias seguenti per Stop-Process:

  • Tutte le piattaforme:
    • spps
  • Windows:
    • kill

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