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 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.
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 Get-CimInstance
cmdlet para obter um objeto Win32_Process que representa o processo e, em seguida, use o método GetOwner 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
Apresenta o que aconteceria mediante a execução do cmdlet. 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
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.
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.