Partilhar 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 cmdlet Stop-Process 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 em 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 Confirm.

Exemplos

Exemplo 1: Parar todas as instâncias de um processo

PS C:\> Stop-Process -Name "notepad"

Este comando para 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ê fosse usar o Id parâmetro para parar os mesmos processos, você 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 para uma instância específica do processo do Bloco de Notas. Ele usa o ID do processo, 3952, para identificar o processo. 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 é uma 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 comando Stop-Process.

Exemplo 3: Parar um processo e detetar que ele parou

calc
$p = Get-Process -Name "calc"
Stop-Process -InputObject $p
Get-Process | Where-Object {$_.HasExited}

Esta série de comandos inicia e para o processo de Calc e, em seguida, deteta 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 processo Calc e, em seguida, armazena-o na variável $p.

O terceiro comando interrompe o processo de Calc. 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 estão parados. Ele usa Get-Process para obter todos os processos no computador. O operador de pipeline () passa os resultados para o cmdlet , que seleciona aqueles em que o valor da propriedade HasExited é $True. HasExited é apenas uma propriedade de objetos de processo. Para encontrar todas as propriedades, digite Get-Process | Get-Member.

Exemplo 4: Parar 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 de usar Force para parar 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 para pará-lo. Como mostrado na saída de exemplo, o primeiro comando falha com uma mensagem de acesso negado, porque esse processo pode ser interrompido apenas 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 Force para suprimir o prompt. Como resultado, o processo é interrompido sem confirmação.

Parâmetros

-Confirm

Solicita confirmação antes de executar o cmdlet.

Tipo:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Necessário:False
Aceitar entrada de pipeline:False
Aceitar carateres universais:False

-Force

Interrompe os processos especificados sem solicitar 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 cmdlet Get-CimInstance para obter um objeto Win32_Process que representa o processo e, em seguida, use o GetOwner método do objeto.

Tipo:SwitchParameter
Position:Named
Default value:None
Necessário:False
Aceitar entrada de pipeline:False
Aceitar carateres universais:False

-Id

Especifica as IDs de processo dos processos a serem interrompidos. Para especificar vários IDs, use vírgulas para separá-los. Para encontrar o PID de um processo, digite Get-Process.

Tipo:Int32[]
Position:0
Default value:None
Necessário:True
Aceitar entrada de pipeline:True
Aceitar carateres universais:False

-InputObject

Especifica os objetos de processo a serem interrompidos. Insira uma variável que contenha os objetos ou digite um comando ou expressão que obtenha os objetos.

Tipo:Process[]
Position:0
Default value:None
Necessário:True
Aceitar entrada de pipeline:True
Aceitar carateres universais: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
Position:Named
Default value:None
Necessário:True
Aceitar entrada de pipeline:True
Aceitar carateres universais:True

-PassThru

Retorna um objeto que representa o processo. Por padrão, esse cmdlet não gera nenhuma saída.

Tipo:SwitchParameter
Position:Named
Default value:None
Necessário:False
Aceitar entrada de pipeline:False
Aceitar carateres universais:False

-WhatIf

Mostra o que aconteceria se o cmdlet fosse executado. O cmdlet não é executado.

Tipo:SwitchParameter
Aliases:wi
Position:Named
Default value:False
Necessário:False
Aceitar entrada de pipeline:False
Aceitar carateres universais:False

Entradas

Process

Você pode canalizar um objeto de processo para este 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 Process objeto que representa o processo interrompido.

Notas

O PowerShell inclui os seguintes aliases para Stop-Process:

  • Todas as plataformas:
    • spps
  • Janelas:
    • kill

Você também pode usar as propriedades e os métodos do objeto de Win32_Process WMI (Instrumentação de Gerenciamento do Windows) no Windows PowerShell. Para obter mais informações, consulte Get-CimInstance e o SDK do WMI.

  • Ao parar processos, perceba que parar um processo pode parar processos e serviços que dependem do processo. Em um caso extremo, parar um processo pode parar o Windows.