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 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 parâmetro Id 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 parar 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 Stop-Process comando.

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 Calc processo 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 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 estão parados. 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 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 é usado 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 Force para suprimir o prompt. Como resultado, o processo é interrompido sem confirmação.

Parâmetros

-Confirm

Solicita a 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 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 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 vários IDs, use vírgulas para separá-los. Para encontrar 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 contenha os objetos ou digite um comando ou expressão que obtenha 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, esse cmdlet não gera nenhuma saída.

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

-WhatIf

Apresenta o que aconteceria mediante a execução do cmdlet. 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 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 objeto Process que representa o processo interrompido.

Notas

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