Share via


Stop-Process

Interrompe um ou mais processos em execução.

Syntax

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 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 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 os 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, armazena-o $p na 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 de usar 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 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 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.

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Force

Interrompe os processos especificados sem pedir confirmação. Por padrão, Stop-Process solicita a 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 representa o processo e, em seguida, use o método GetOwner do objeto.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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.

Type:Int32[]
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters: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.

Type:Process[]
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters: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.

Type:String[]
Aliases:ProcessName
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:True

-PassThru

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

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-WhatIf

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

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters: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 e o SDK do WMI.

  • Ao parar processos, perceba que parar um processo pode parar processos e serviços que dependem do processo. Em casos extremos, interromper um processo pode parar o funcionamento do Windows.