Cómo matar un proceso por su linea de comandos


Hola Amig@s,

Si necesitamos matar un proceso en concreto por su linea de comandos, por ejemplo si tenemos un CMD o BAT al que se le pasan una serie de variables, y necesitamos matar uno de ellos, sin hacer un taskkill /f /im cmd*, podemos hacerlo de dos formas distintas.

Método Powershell (admite programación desde el planificador de windows)

Nota: Esta opción solo permite matar un proceso, si hay uno duplicado no lo matará.

1-Creamos un fichero llamado matar.ps1
2-Dentro insertamos el siguiente contenido:

(Get-WmiObject win32_process -filter "Name='CMD.exe' AND CommandLine LIKE '%Variable_a_buscar%'").Terminate()

3-Ejecutamos el powershell o lo programamos con la siguiente cadena:
Powershell -ExecutionPolicy ByPass -File matar.ps1

Método Powershell (para matar varios procesos duplicados)

1-Creamos un fichero llamado matardupli.ps1
2-Dentro insertamos el siguiente contenido:

$processes = Get-WmiObject Win32_Process -Filter "name = 'CMD.exe'
foreach($proc in $processes)
{
    if($proc.CommandLine.Contains("TEST.CMD"))
    {
        Write-Host "Cerrando proceso $proc"
        Stop-Process -F $proc.ProcessId
    }
    if($proc.CommandLine.Contains("TEST.CMD"))
    {
        Write-Host "Cerrando otra vez proceso $proc"
        Stop-Process -F $proc.ProcessId
    }
}

3-Ejecutamos el powershell o lo programamos con la siguiente cadena:
Powershell -ExecutionPolicy ByPass -File matar.ps1

Método WMIC (no admite programación desde el planificador de windows al carecer de permisos en su ejecución desde dicho punto).

1-Creamos un cmd con el siguiente contenido:

wmic process where "caption='CMD.exe' AND commandline Like '%Variable_a_buscar%'" call terminate

Espero que les haya resultado útil.

Salu2.
Share on Google Plus
    Blogger Comment

0 comentarios: