Windows 10 Leonardo Duarte
Como Finalizar Um Serviço Do Windows Que Está Em Modo Stopping
A maioria dos administradores do Windows enfrentou um problema ao tentar interromper (reiniciar) um serviço, mas fica preso com o status Parando . Você não poderá parar esse serviço no console do Service Management (services.msc), pois todos os botões desse serviço se tornarão inativos. A maneira mais fácil é reiniciar o Windows, mas nem sempre é aceitável. Vamos considerar uma maneira alternativa, que permite eliminar o serviço ou processo do Windows sem reiniciar o sistema.
Às vezes, como administrador, você pode precisar matar um serviço que está parado ao parar para evitar a reinicialização de um servidor no meio do dia.
A maneira mais fácil de encerrar um serviço preso é usar o taskkill. Primeiro de tudo, encontre o PID (identificador de processo) do serviço. Como exemplo, vamos usar o Windows Update, o nome do sistema é wuauserv (você pode verificar o nome nas propriedades do serviço no console services.msc).
Veja o que você precisa fazer:
Etapa 1. Descubra o Nome do Serviço
Para fazer isso, vá para serviços e clique duas vezes no serviço que ficou preso. Anote o “Nome do serviço”.
Etapa 2. Descubra o PID do serviço
Abra um prompt de comando elevado e digite:
sc queryex servicename
(onde nome_do_serviço é o nome do serviço que você obteve na Etapa 1.)
Anote o PID
Passo 3. Matar o PID
No mesmo prompt de comando, digite:
taskkill /f /pid [PID]
Onde [PID] é o número do serviço.
Se tiver êxito, você deverá receber a seguinte mensagem:
SUCESSO: O processo com o PID XXXX foi encerrado.
Tenha cuidado com o que você está matando embora. Se você matar um serviço crítico do Windows, pode acabar forçando a máquina a reinicializar por conta própria.
Nota: Ao forçar um serviço a parar, você também pode usar estas instruções para matar um serviço do Windows que também está travado no início. Isso permitirá que você reinicie o serviço.
Usando o comando a seguir, você pode obter a lista de serviços com o status Parando:
Get-WmiObject -Class win32_service | Where-Object {$_.state -eq 'stop pending'}
O cmdlet Stop-Process permite desligar os processos de todos os serviços encontrados. Tendo unido ambas as operações em um ciclo, obtemos um script para desligar automaticamente todos os processos dos serviços presos no sistema:
$Services = Get-WmiObject -Class win32_service -Filter "state = 'stop pending'"
if ($Services) {
foreach ($service in $Services) {
try {
Stop-Process -Id $service.processid -Force -PassThru -ErrorAction Stop
}
catch {
Write-Warning -Message " Error. Error details: $_.Exception.Message"
}
}
}
else {
Write-Output "No services with 'Stopping'.status"
}