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 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 Confirm.
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 Id parâmetro 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 interromper 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 comando Stop-Process.
Exemplo 3: Parar um processo e detetar que ele parou
PS C:\> calc
PS C:\> $p = Get-Process -Name "calc"
PS C:\> Stop-Process -InputObject $p
PS C:\> Get-Process | Where-Object {$_.HasExited}
Esta série de comandos inicia e para o processo Calc 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 processo Calc e, em seguida, armazena-o 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 parados.
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 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 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 de usar Force para parar 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 para 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 confirmação antes de executar o cmdlet.
Tipo: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | False |
Necessário: | False |
Aceitar entrada de pipeline: | False |
Aceitar carateres universais: | 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 cmdlet Get-WmiObject para obter um objeto Win32_Process que representa o processo e, em seguida, use o GetOwner método do objeto.
Tipo: | SwitchParameter |
Position: | Named |
Default value: | None |
Necessário: | False |
Aceitar entrada de pipeline: | False |
Aceitar carateres universais: | 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
.
Tipo: | Int32[] |
Position: | 0 |
Default value: | None |
Necessário: | True |
Aceitar entrada de pipeline: | True |
Aceitar carateres universais: | 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.
Tipo: | Process[] |
Position: | 0 |
Default value: | None |
Necessário: | True |
Aceitar entrada de pipeline: | True |
Aceitar carateres universais: | 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.
Tipo: | String[] |
Aliases: | ProcessName |
Position: | Named |
Default value: | None |
Necessário: | True |
Aceitar entrada de pipeline: | True |
Aceitar carateres universais: | True |
-PassThru
Retorna um objeto que representa o processo. Por padrão, esse cmdlet não gera nenhuma saída.
Tipo: | SwitchParameter |
Position: | Named |
Default value: | None |
Necessário: | False |
Aceitar entrada de pipeline: | False |
Aceitar carateres universais: | False |
-WhatIf
Mostra o que aconteceria se o cmdlet fosse executado. O cmdlet não é executado.
Tipo: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | False |
Necessário: | False |
Aceitar entrada de pipeline: | False |
Aceitar carateres universais: | False |
Entradas
Você pode canalizar um objeto de processo para este cmdlet.
Saídas
None, System.Diagnostics.Process
Este 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.
Notas
Você também pode se referir a 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 de Win32_Process WMI (Instrumentação de Gerenciamento do Windows) no Windows PowerShell. Para obter mais informações, consulte Get-WmiObject 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.