Cómo matar un proceso de Windows en un sistema remoto
Quizás esté trabajando felizmente en un servidor remoto de Windows y luego encuentre un proceso que funciona mal y consume valiosos ciclos de CPU. ¿A qué te dedicas? ¡Mátalo!
En este tutorial, aprenderá cómo finalizar un proceso de Windows utilizando utilidades nativas, utilidades de terceros y PowerShell. Primero aprenderá a examinar los procesos en ejecución en Windows y luego a finalizarlos.
Requisitos previos
Si desea seguir los pasos de este tutorial, asegúrese de tener lo siguiente con anticipación:
- Una PC con Windows: todas las demostraciones de este tutorial utilizarán Windows 10, pero Windows 7+ también funcionará.
- Un servidor Windows u otro escritorio de Windows para utilizarlo como objetivo para finalizar las tareas remotas. Este tutorial utiliza un Windows Server 2016 independiente como servidor remoto.
- La suite Sysinternals de Microsoft.
- Windows PowerShell 5 o superior. Este tutorial utiliza PowerShell v7.1.3
Consultar procesos remotos de Windows con lista de tareas
Desde Windows XP, existe una herramienta útil llamada lista de tareas. La lista de tareas es una herramienta útil que consulta procesos en computadoras remotas. Antes de poder finalizar un proceso, ¡primero debes descubrirlo!
Abra una sesión de PowerShell o símbolo del sistema en su escritorio y escriba el siguiente comando para mostrar todos los procesos en ejecución en su computadora remota.
El siguiente comando consulta una computadora remota (/S) autenticando la conexión con el nombre de usuario del administrador (/U) y la contraseña (/P).
tasklist /S WIN-BANGJIEFNOC.local.net /U administrator /P passwordNotarás a continuación que el Nombre de la sesión no aparece. Dado que está ejecutando tasklist en una computadora remota, tasklist no proporciona el Nombre de la sesión.
Quizás prefiera enumerar sólo un único proceso. No es un problema. Para hacerlo, especifique el parámetro /FI. El parámetro /FI acepta una consulta que se pasa a la tasklist para filtrar procesos específicos.
tasklist /S WIN-BANGJIEFNOC.local.net /fi "imagename eq notepad.exe" /U administrator /P 'password'Consultar procesos remotos de Windows con PSList
Otra herramienta para ver los procesos en ejecución es PSList, y esta utilidad es parte de Sysinternals Suite. ¡Este conjunto de herramientas existe desde hace muchos años y fue creado por Mark Russinovich, CTO de Azure!
Comencemos con cómo puede ver los procesos en ejecución en una computadora remota.
1. Abra una sesión de PowerShell o un símbolo del sistema en su escritorio y cambie el directorio donde extrajo Sysinternal Suite.
2. En su sesión de PowerShell, ejecute el siguiente comando para mostrar los procesos en ejecución en la computadora remota y el uso de CPU asociado en tiempo real.
El siguiente comando ejecuta pslist para consultar todos los procesos remotos de Windows en la computadora WIN-BANGJIEFNOC autenticando el nombre de usuario Administrador (-u) y contraseña (
El comando utiliza el modificador -s que convierte pslist en “modo administrador de tareas” que actualiza repetidamente la lista.
Si es la primera vez que utiliza una herramienta de Sysinternals, puede aparecer un banner que le solicita que acepte el CLUF; haga clic en Aceptar.
.\pslist \\WIN-BANGJIEFNOC.local.net -u Administrator -p 'password' -sAhora verá el siguiente resultado al ejecutar ese comando; Para este artículo, le interesan 3 de estos valores. Como se muestra abajo.
- Nombre: El nombre del proceso.
- Pid: Identificador de proceso, un valor crítico utilizado en este tutorial, el número PID se puede utilizar para finalizar un proceso remoto. Es la identificación numérica asignada a un proceso.
- CPU: muestra casi en tiempo real la utilización de su 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 usando el parámetro
-eseguido del nombre del proceso, por ejemplo,-e Winlogon.
Eliminar procesos por nombre de proceso con PSKill
Una vez que sepa cómo encontrar procesos remotos, profundicemos en cómo eliminarlos. Para empezar, cubramos la utilidad pskill. Primero, aprenda cómo eliminar procesos por nombre de proceso.
1. Asegúrese de tener un proceso que pueda eliminar en su servidor remoto. Este tutorial utilizará el proceso del bloc de notas.
2. Abra una sesión de PowerShell o un símbolo del sistema en su escritorio local, cambie el directorio donde extrajo Sysinternal Suite y ejecute el siguiente comando. Puede ver que la sintaxis de pskill es similar a pslist.
.\pskill.Exe \\WIN-BANGJIEFNOC.local.net -u administrator -p 'password' -e notepad.exe
3. Ahora, ejecute pslist, como se explicó en la sección anterior, para confirmar que el proceso se detuvo.
.\pslist \\WIN-BANGJIEFNOC.local.net -u Administrator -p 'password' -e notepad.exeEliminar procesos por ID de proceso con PSKill
Eliminar el proceso por nombre puede ser suficiente para sus necesidades si solo se está ejecutando una instancia de ese proceso o si desea eliminar todos los procesos con ese nombre. ¿Qué pasa si vas a eliminar una instancia particular de un proceso en ejecución? Los siguientes pasos lo demostrarán.
1. En su servidor remoto, abra el Bloc de notas dos veces; matarás uno de estos procesos en esta demostración; Por supuesto, puede sustituir otros procesos.
2. Ejecute el siguiente comando tomando nota de uno de los Pid como se muestra a continuación; lo necesitas para el siguiente paso.
.\pslist \\WIN-BANGJIEFNOC.local.net -u Administrator -p password -e notepad3. Usando el PID, ahora ejecute pskill, proporcionando el PID como último argumento.
.\pskill.Exe \\WIN-BANGJIEFNOC.local.net -u administrator -p password 19844. Finalmente, verifique que todavía tenga una instancia del Bloc de notas ejecutándose volviendo a ejecutar pslist. Ahora solo debería ver una única instancia del Bloc de notas ejecutándose.
Eliminar 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 eliminemos el Bloc de notas nuevamente!
Eliminar proceso por nombre
1. En su servidor remoto, abra el Bloc de notas; El Bloc de notas es el proceso que eliminará en esta demostración; Por supuesto, puedes sustituirlo por otro proceso.
2. Abra una sesión de PowerShell o un símbolo del sistema en su escritorio. Escribir el siguiente comando eliminará notepad.exe
taskkill /S WIN-BANGJIEFNOC.local.net /you administrator /p password /IM notepad.exeEl resultado se muestra a continuación:
/IM es el parámetro de Imagen; en este caso es notepad.exe
3. Para confirmar que el proceso se detuvo, ejecute tasklist. Ahora debería ver que no hay tareas que coincidan con ese filtro.
tasklist /S WIN-BANGJIEFNOC.local.net /fi "imagename eq notepad.exe" /U administrator /P 'password'Eliminación de procesos remotos de Windows con TaskKill por PID
Matar un proceso con taskkill usando un PID no es muy diferente a usar el nombre del proceso. Pero, como no puede usar el nombre, primero deberá encontrar el PID y luego pasarlo a taskkill.
Suponiendo que su Bloc de notas se ejecute en su host remoto de Windows:
1. Ejecute tasklist como se muestra a continuación para encontrar el PID del proceso del Bloc de notas. Tome nota de uno de los PID como se muestra a continuación; lo necesitas para el siguiente paso.
tasklist /S WIN-BANGJIEFNOC.local.net /fi "imagename eq notepad.exe" /U administrator /P 'password'2. Ahora, ejecute taskkill proporcionando el PID como último argumento.
taskkill /S WIN-BANGJIEFNOC.local.net /u administrator /p 'password' /PID 37763. Finalmente, ejecute tasklist para confirmar que el proceso se haya detenido.
Eliminar un proceso remoto de Windows con PowerShell
PowerShell le ofrece un par de opciones para eliminar procesos remotos; el primer cmdlet Stop-Process no puede finalizar de forma nativa un proceso remoto, ya que no tiene una opción para especificar un nombre de computadora. Pero puede solucionar este problema ejecutando Stop-Process de forma remota a través de PowerShell Remoting.
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.
$credentials = Get-Credential2. A continuación, dado que el tutorial utilizará SSL para conectarse a la computadora remota y usar un certificado autofirmado, cree una PSSessionOption que omitirá la verificación del certificado de una autoridad certificadora confiable.
$PSSessionOption = New-PSSessionOption -SkipCACheck3. Ahora, conéctese al servidor con el comando Enter-PSSession, que establece una sesión interactiva con el servidor remoto.
El siguiente comando se conecta a la computadora 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 conectarse a través de SSL (UseSSL).
Enter-PSSession -ComputerName WIN-BANGJIEFNOC.local.net -Credential $credentials -SessionOption $PSSessionOption -UseSSL4. Una vez que esté conectado al host remoto, verifique el proceso que desea finalizar ejecutando Get-Process. En este caso, verá el proceso notepad.
Get-Process -ProcessName Notepad5. Para finalizar este proceso, ejecute Stop-Process, como se muestra a continuación.
Stop-Process -ProcessName Notepad6. Finalmente, confirme que ha finalizado el proceso volviendo a ejecutar Get-Process y debería recibir un mensaje de error.
Si desea detener un proceso remoto de Windows de forma no interactiva, utilice el comando
Invoke-Commandutilizando los siguientes parámetros:Invoke-Command -ComputerName WIN-BANGJIEFNOC.local. net -Credential $credenciales -ScriptBlock {Stop-Process -ProcessName bloc de notas} -UseSSL. Encapsular el comandoStop-Procesen el parámetroScriptBlockenvía el comando al host remoto.
Conclusión
Ha aprendido sobre diferentes métodos para eliminar procesos remotos y cómo superar situaciones en las que las reglas del firewall de la red pueden impedir que las utilidades funcionen correctamente; Es posible que este tutorial también te haya ayudado a reparar Windows.
Las utilidades que conoció son herramientas potentes; ¡Utilízalo con cuidado!
















