Stop-Process
Interrompe um ou mais processos em execução.
Sintaxe
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>]
Description
O Stop-Process
cmdlet interrompe um ou mais processos em execução. Você pode especificar um processo por nome de processo ou ID de processo (PID) ou passar um objeto de processo para Stop-Process
. Stop-Process
funciona apenas em processos em execução no computador local.
No Windows Vista e versões posteriores do sistema operacional Windows, para interromper um processo que não pertence ao usuário atual, você deve iniciar o PowerShell usando a opção Executar como administrador. Além disso, você não será solicitado a confirmar, a menos que especifique o parâmetro Confirmar .
Exemplos
Exemplo 1: Parar todas as instâncias de um processo
PS C:\> Stop-Process -Name "notepad"
Este comando interrompe todas as instâncias do processo do Bloco de notas no computador. Cada instância do Bloco de Notas é executada em seu próprio processo. Ele usa o parâmetro Name para especificar os processos, todos com o mesmo nome. Se você usasse o parâmetro Id para interromper os mesmos processos, teria que listar as IDs de processo de cada instância do Bloco de Notas.
Exemplo 2: Parar uma instância específica de um 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
Este comando interrompe uma instância específica do processo do Bloco de notas. Ele usa a ID do processo, 3952, para identificá-lo. O parâmetro Confirm direciona o PowerShell para avisá-lo antes de interromper o processo. Como o prompt inclui o nome do processo, além de sua ID, essa é a prática recomendada.
O parâmetro PassThru passa o objeto de processo para o formatador para exibição. Sem esse parâmetro, não haveria exibição após um Stop-Process
comando.
Exemplo 3: Parar um processo e detectar que ele foi interrompido
calc
$p = Get-Process -Name "calc"
Stop-Process -InputObject $p
Get-Process | Where-Object {$_.HasExited}
Essa série de comandos inicia e interrompe o Calc
processo e, em seguida, detecta os processos que foram interrompidos.
O primeiro comando inicia uma instância da calculadora.
O segundo comando usa Get-Process
obtém um objeto que representa o Calc
processo e, em seguida, o armazena na $p
variável.
O terceiro comando interrompe o Calc
processo. Ele usa o parâmetro InputObject para passar o objeto para Stop-Process
.
O último comando obtém todos os processos no computador que estavam em execução, mas que agora são interrompidos. Ele usa Get-Process
para obter todos os processos no computador. O operador de pipeline (|
) passa os resultados para o Where-Object
cmdlet, que seleciona aqueles em que o valor da propriedade HasExited é $True. HasExited é apenas uma propriedade de objetos de processo. Para localizar todas as propriedades, digite Get-Process | Get-Member
.
Exemplo 4: Interromper um processo que não pertence ao usuário atual
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>
Esses comandos mostram o efeito do uso do Force para interromper um processo que não pertence ao usuário.
O primeiro comando usa Get-Process
para obter o processo Lsass. Um operador de pipeline envia o processo para Stop-Process
interrompê-lo. Conforme mostrado na saída de exemplo, o primeiro comando falha com uma mensagem de acesso negado, pois esse processo só pode ser interrompido por um membro do grupo Administrador no computador.
Quando o PowerShell é aberto usando a opção Executar como administrador e o comando é repetido, o PowerShell solicita a confirmação.
O segundo comando especifica Força para suprimir o prompt. Como resultado, o processo é interrompido sem confirmação.
Parâmetros
-Confirm
Solicita sua confirmação antes de executar o cmdlet.
Tipo: | SwitchParameter |
Aliases: | cf |
Cargo: | Named |
Valor padrão: | False |
Obrigatório: | False |
Aceitar a entrada de pipeline: | False |
Aceitar caracteres curinga: | False |
-Force
Interrompe os processos especificados sem pedir confirmação. Por padrão, Stop-Process
solicita confirmação antes de interromper qualquer processo que não seja de propriedade do usuário atual.
Para localizar o proprietário de um processo, use o Get-CimInstance
cmdlet para obter um objeto Win32_Process que represente o processo e, em seguida, use o método GetOwner do objeto.
Tipo: | SwitchParameter |
Cargo: | Named |
Valor padrão: | None |
Obrigatório: | False |
Aceitar a entrada de pipeline: | False |
Aceitar caracteres curinga: | False |
-Id
Especifica as IDs de processo dos processos a serem interrompidos. Para especificar IDs múltiplas, use vírgulas para separá-las. Para localizar o PID de um processo, digite Get-Process
.
Tipo: | Int32[] |
Cargo: | 0 |
Valor padrão: | None |
Obrigatório: | True |
Aceitar a entrada de pipeline: | True |
Aceitar caracteres curinga: | False |
-InputObject
Especifica os objetos de processo a serem interrompidos. Insira uma variável que contém os objetos ou digite um comando ou uma expressão que obtém os objetos.
Tipo: | Process[] |
Cargo: | 0 |
Valor padrão: | None |
Obrigatório: | True |
Aceitar a entrada de pipeline: | True |
Aceitar caracteres curinga: | False |
-Name
Especifica os nomes dos processos a serem interrompidos. Você pode digitar vários nomes de processo, separados por vírgulas, ou usar caracteres curinga.
Tipo: | String[] |
Aliases: | ProcessName |
Cargo: | Named |
Valor padrão: | None |
Obrigatório: | True |
Aceitar a entrada de pipeline: | True |
Aceitar caracteres curinga: | True |
-PassThru
Retorna um objeto que representa o processo. Por padrão, este cmdlet não gera saída.
Tipo: | SwitchParameter |
Cargo: | Named |
Valor padrão: | None |
Obrigatório: | False |
Aceitar a entrada de pipeline: | False |
Aceitar caracteres curinga: | False |
-WhatIf
Mostra o que aconteceria se o cmdlet fosse executado. O cmdlet não é executado.
Tipo: | SwitchParameter |
Aliases: | wi |
Cargo: | Named |
Valor padrão: | False |
Obrigatório: | False |
Aceitar a entrada de pipeline: | False |
Aceitar caracteres curinga: | False |
Entradas
Você pode canalizar um objeto de processo para esse cmdlet.
Saídas
None
Por padrão, esse cmdlet não retorna nenhuma saída.
Quando você usa o parâmetro PassThru , esse cmdlet retorna um objeto Process que representa o processo interrompido.
Observações
O Windows PowerShell inclui os seguintes aliases para Stop-Process
:
kill
spps
Você também pode usar as propriedades e os métodos do objeto Win32_Process WMI (Instrumentação de Gerenciamento do Windows) no Windows PowerShell. Para obter mais informações, consulte
Get-CimInstance
o SDK do WMI.Ao interromper processos, perceba que interromper um processo pode interromper processos e serviços que dependem do processo. Em casos extremos, interromper um processo pode parar o funcionamento do Windows.