foreach($_ in Get-Process)
{
if($_.ProcessName -eq "notepad" -and $_.Responding -eq $false)
{
Stop-Process $_
}
}
Substitua o bloco de notas pelo nome do seu processo mal escrito.
Salve o one-liner em um arquivo * .ps1.
Faça com que o Agendador de Tarefas o execute a intervalos de alguns minutos.
Eu não posso prever exatamente como o seu processo desonesto se comporta. Talvez a propriedade de resposta dos processos ainda possa ser verdadeira mesmo que a janela principal tenha ido embora o processo em si ainda esteja em execução. Então você pode ter que brincar com isso. Talvez a propriedade MainWindowTitle tenha sido alterada quando o processo "travou" e ainda está em execução. O ponto é que você precisa descobrir que tipo de comportamento essa coisa exibe quando está agindo e como você pode detectá-la.