Quizás estás trabajando felizmente en un servidor remoto con Windows, luego descubres un proceso que se descontrola, consumiendo valiosos ciclos de CPU. ¿Qué haces? ¡Mátalo!
En este tutorial, aprenderás cómo finalizar un proceso en Windows utilizando utilidades nativas, utilidades de terceros y PowerShell. Primero aprenderás cómo examinar los procesos en ejecución en Windows y luego cómo finalizar esos procesos.
Prerrequisitos
Si deseas seguir los pasos de este tutorial, asegúrate de tener lo siguiente de antemano:
- A Windows PC – All demos in this tutorial will use Windows 10, but Windows 7+ will work also.
- A Windows Server or another Windows desktop to use as your target for killing the remote tasks. This tutorial uses a standalone Windows Server 2016 as the remote server.
- La Suite Sysinternals de Microsoft.
- Windows PowerShell 5 o superior. Este tutorial utiliza PowerShell v7.1.3
Consulta de Procesos Remotos de Windows con Tasklist
Desde Windows XP, existe una herramienta útil llamada tasklist. Tasklist es una herramienta práctica que consulta los procesos en computadoras remotas. Antes de poder finalizar un proceso, ¡primero debes descubrirlos!
Abre una sesión de PowerShell o símbolo del sistema en tu escritorio y escribe el siguiente comando para mostrar todos los procesos en ejecución en tu computadora remota.
El comando a continuación consulta una computadora remota (/S
) autenticando la conexión con el nombre de usuario de administrador (/U
) y la contraseña (/P
).
Notarás a continuación que el Nombre de la Sesión no aparece. Dado que estás ejecutando tasklist
en un equipo remoto, tasklist
no proporciona el Nombre de la Sesión.

Tal vez prefieras listar solo un proceso. No hay problema. Para hacerlo, especifica el parámetro /FI
. El parámetro /FI
acepta una consulta que se pasa a tasklist
para filtrar procesos específicos.

Consulta de Procesos Remotos de Windows con PSList
Otra herramienta para ver procesos en ejecución es PSList, y esta utilidad es parte de la Suite Sysinternals. ¡Esta suite de herramientas ha estado disponible durante muchos años y fue creada por Mark Russinovich, CTO de Azure!
Comencemos con cómo puedes ver procesos en ejecución en un equipo remoto.
1. Abre una sesión de PowerShell o un símbolo del sistema en tu escritorio y cambia el directorio a donde extrajiste la Suite Sysinternals.
2. En tu sesión de PowerShell, ejecuta el siguiente comando para mostrar los procesos en ejecución en el equipo remoto y el uso de la CPU asociado en tiempo real.
El comando a continuación ejecuta pslist
para consultar todos los procesos remotos de Windows en la computadora WIN-BANGJIEFNOC
autenticando el nombre de usuario Administrador
(-u
) y la contraseña (-p
).
El comando utiliza el interruptor -s
para convertir pslist
en el “modo administrador de tareas” que actualiza la lista repetidamente.
Si es la primera vez que utiliza una herramienta de Sysinternals, puede aparecer un banner que le pide que acepte el EULA; haga clic en OK.
Ahora ve el siguiente resultado de ejecutar ese comando; para este artículo, le interesan 3 de estos valores. Como se muestra a continuación.
- Nombre: El nombre del proceso.
- Pid: Identificador de proceso, un valor crítico utilizado en este tutorial, el número de PID se puede utilizar para finalizar un proceso remoto. Es el identificador numérico asignado a un proceso.
- CPU: Esto muestra en tiempo casi real la utilización de la CPU disponible en general.
Los demás valores están relacionados con la memoria y están fuera del alcance de este artículo.

3. Dado que el paso dos utilizó el interruptor -s
, presione Ctrl-C para salir de pslist
y volver a la consola.
Reduzca la lista de procesos devueltos utilizando el interruptor
-e
seguido del nombre del proceso, por ejemplo,-e Winlogon
.
Matando Procesos Por Nombre de Proceso con PSKill
Una vez que sepas cómo encontrar procesos remotos, ahora veamos cómo matarlos. Para empezar, cubramos la utilidad pskill . Primero, aprende cómo matar procesos por nombre de proceso.
1. Asegúrate de tener un proceso que puedas matar en tu servidor remoto. Este tutorial usará el proceso notepad.
2. Abre una sesión de PowerShell o símbolo del sistema en tu escritorio local y cambia el directorio a donde hayas extraído la Suite Sysinternals y ejecuta el siguiente comando. Puedes ver que la sintaxis para pskill
es similar a la de pslist
.

3. Ahora, ejecuta pslist
, como se explicó en la sección anterior, para confirmar que el proceso está realmente detenido.

Matando Procesos Por ID de Proceso con PSKill
Matar el proceso por nombre puede ser suficiente para tus necesidades si solo se está ejecutando una instancia de ese proceso o si deseas matar todos los procesos con ese nombre. ¿Qué pasa si quieres matar una instancia particular de un proceso en ejecución? Los siguientes pasos lo demostrarán.
1. En tu servidor remoto, abre Notepad dos veces; matarás uno de estos procesos en esta demostración; por supuesto, puedes sustituir otros procesos.
2. Ejecuta el siguiente comando tomando nota de uno de los Pid como se muestra a continuación; necesitarás eso para el siguiente paso.

3. Usando el PID, ejecuta ahora pskill
, proporcionando el PID como último argumento.

4. Finalmente, verifica que todavía tienes una instancia de Notepad en ejecución volviendo a ejecutar pslist
. Ahora solo deberías ver una única instancia de Notepad en ejecución.

Matando Procesos Remotos de Windows con TaskKill por Nombre
La utilidad taskkill es nativa de Windows e incluye más opciones de línea de comandos para reiniciar procesos por nombre de usuario y nombre de aplicación. ¡Comencemos y matemos Notepad nuevamente!
Matar Proceso por Nombre
1. En tu servidor remoto, abre Notepad; Notepad es el proceso que matarás en esta demostración; por supuesto, puedes sustituirlo por otro proceso.
2. Abre una sesión de PowerShell o un símbolo del sistema en tu escritorio. Escribir el siguiente comando matará notepad.exe
La salida se muestra a continuación:
/IM es el parámetro para Imagen; en este caso, es notepad.exe

3. Para confirmar que el proceso se detuvo, ejecuta tasklist
. Ahora no deberías ver tareas que coincidan con ese filtro.

Matando Procesos Remotos de Windows con TaskKill por PID
Matar un proceso con taskkill
usando un PID no es muy diferente que usar el nombre del proceso. Pero, como no puedes usar el nombre, primero necesitarás encontrar el PID y luego pasarlo a taskkill
.
Suponiendo que tienes Notepad en ejecución en tu host remoto de Windows:
1. Ejecute tasklist
como se muestra a continuación para encontrar el PID del proceso Notepad. Tome nota de uno de los PID como se muestra a continuación; necesitará eso para el próximo paso.

2. Ahora, ejecute taskkill
proporcionando el PID como el último argumento.

3. Finalmente, ejecute tasklist
para confirmar que el proceso se ha detenido.

Matar un proceso remoto de Windows con PowerShell
PowerShell le ofrece un par de opciones para matar procesos remotos; el primer cmdlet Stop-Process
no puede matar nativamente un proceso remoto, ya que no tiene una opción para especificar un nombre de equipo. Sin embargo, puede resolver este problema ejecutando Stop-Process
de forma remota a través de Remoting de PowerShell.
1. Si su host y servidor remoto no están en un dominio de Active Directory, primero proporcione un nombre de usuario y contraseña, creando un objeto PSCredential.

2. A continuación, como el tutorial utilizará SSL para conectarse al ordenador remoto y utilizará un certificado autofirmado, crea un PSSessionOption que omitirá la verificación del certificado para una autoridad de certificación confiable.
3. Ahora, conéctate al servidor con el comando Enter-PSSession
, que establece una sesión interactiva en el servidor remoto.
El siguiente comando se está conectando al ordenador WIN-BANGJIEFNOC.local.net
utilizando el nombre de usuario y la contraseña proporcionados anteriormente (Credential
), omitiendo la verificación de la autoridad de certificación (SessionOption
), y conectándose a través de SSL (UseSSL
).

4. Una vez que estés conectado al host remoto, verifica el proceso que deseas detener ejecutando Get-Process
. En este caso, verás el proceso notepad
.

5. Para detener este proceso, ejecuta Stop-Process
, como se muestra a continuación.
6. Por último, confirma que has detenido el proceso volviendo a ejecutar Get-Process
, y deberías recibir un mensaje de error.

Si deseas detener un proceso de Windows remoto de forma no interactiva, utiliza el comando
Invoke-Command
con los siguientes parámetros:Invoke-Command -ComputerName WIN-BANGJIEFNOC.local.net -Credential $credentials -ScriptBlock {Stop-Process -ProcessName notepad} -UseSSL
. Al encapsular el comandoStop-Proces
en el parámetroScriptBlock
, se envía el comando al host remoto.
Conclusión
Has aprendido sobre diferentes métodos para finalizar procesos remotos y cómo superar situaciones en las que las reglas del firewall de red pueden impedir que las utilidades funcionen correctamente; este tutorial también podría haberte ayudado a solucionar problemas en Windows.
Las utilidades sobre las que has aprendido son herramientas potentes; ¡úsala con precaución!
Source:
https://adamtheautomator.com/how-to-kill-a-windows-process/