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 cmdlet stop-process interrompe um ou mais processos em execução. Você pode especificar um processo por nome de processo ou PID (ID do processo) 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"

Esse 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ê fosse usar a ID parâmetro 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

Esse comando interrompe uma instância específica do processo do Bloco de Notas. Ele usa a ID do processo, 3952, para identificar o processo. O parâmetro Confirme orienta o PowerShell a solicitar que você pare o processo. Como o prompt inclui o nome do processo além de sua ID, essa é a melhor prática. 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 detectar que ele foi interrompido

PS C:\> calc
PS C:\> $p = Get-Process -Name "calc"
PS C:\> Stop-Process -InputObject $p
PS C:\> Get-Process | Where-Object {$_.HasExited}

Essa série de comandos inicia e interrompe o processo calc e detecta 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 o armazena na variável $p.

O terceiro comando interrompe o processo 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 interrompidos. Ele usa get-process para obter todos os processos no computador. O operador de pipeline (|) passa os resultados para o cmdlet Where-Object, que seleciona os quais 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: Parar um processo que não pertence ao usuário atual

PS C:\> 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 C:\> 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 C:\> Get-Process -Name "lsass" | Stop-Process -Force
[ADMIN]: PS C:\>

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 de Lsass. Um operador de pipeline envia o processo para stop-process para pará-lo. Conforme mostrado na saída de exemplo, o primeiro comando falha com uma mensagem do Access negada, 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 confirmação.

O segundo comando especifica Force para suprimir o prompt. Como resultado, o processo é interrompido sem confirmação.

Parâmetros

-Confirm

Solicita a 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 solicitar confirmação. Por padrão, de stop-process solicita confirmação antes de interromper qualquer processo que não pertence ao usuário atual.

Para localizar o proprietário de um processo, use o cmdlet Get-WmiObject para obter um objeto Win32_Process que representa o processo e 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 várias IDs, use vírgulas para separar as IDs. 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 contenha os objetos ou digite um comando ou 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 de processo 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, esse cmdlet não gera nenhuma 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 este cmdlet.

Saídas

None, System.Diagnostics.Process

Esse cmdlet retorna um objeto System.Diagnostics.Process que representa o processo interrompido, se você especificar o parâmetro PassThru. Caso contrário, esse cmdlet não gerará nenhuma saída.

Observações

  • Você também pode consultar stop-process por seus aliases internos, matar e spps. Para obter mais informações, consulte about_Aliases.

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

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