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