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
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
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
calc
$p = Get-Process -Name "calc"
Stop-Process -InputObject $p
Get-Process | Where-Object {$_.HasExited}
Essa série de comandos inicia e interrompe o processo de 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 de Calc
e o armazena 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 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 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: 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
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, 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-CimInstance
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
Por padrão, esse cmdlet não retorna nenhuma saída.
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 WMI (Instrumentação de Gerenciamento do Windows) Win32_Process no Windows PowerShell. Para obter mais informações, consulte Get-CimInstance
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.