Compartilhar via


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

Process

Você pode canalizar um objeto de processo para esse cmdlet.

Saídas

None

Por padrão, esse cmdlet não retorna nenhuma saída.

Process

Quando você usa o parâmetro PassThru , esse cmdlet retorna um objeto Process que representa o processo interrompido.

Observações

O PowerShell inclui os seguintes aliases para Stop-Process:

  • Todas as plataformas:
    • spps
  • Windows:
    • kill

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.