Tengo 3 instancias de aplicaciones que se ejecutan desde diferentes lugares. Todos los procesos tienen nombres similares.Mata el proceso por nombre de archivo
¿Cómo puedo eliminar el proceso que se inició desde un lugar específico?
Tengo 3 instancias de aplicaciones que se ejecutan desde diferentes lugares. Todos los procesos tienen nombres similares.Mata el proceso por nombre de archivo
¿Cómo puedo eliminar el proceso que se inició desde un lugar específico?
, usted puede obtener la ruta de aplicación:
Get-Process | Where-Object {$_.Path -like "*something*"} | Stop-Process -WhatIf
que funcionará sólo de la máquina local. Para terminar procesos remotos:
Get-WmiObject Win32_Process -Filter "ExecutablePath LIKE '%something%'" -ComputerName server1 | Invoke-WmiMethod -Name Terminate
Puede echar un vistazo a la propiedad MainModule
dentro de la clase Process
(que se puede invocar a través de powershell).
foreach (Process process in Process.GetProcesses())
{
if (process.MainModule.FileName == location)
{
process.Kill();
}
}
También consideraría las posibles excepciones que pueden ocurrir al llamar este código. Esto podría ocurrir si está intentando acceder a procesos que ya no están presentes (eliminados desde la última vez que se llamó a GetProcess) o procesos mientras no tenga permisos.
Prueba esto: http://technet.microsoft.com/en-us/library/ee177004.aspx
Stop-Process -processname notepad
me gustaría mejorar ligeramente la respuesta de Shay Levy, ya que no funcionaba el trabajo bien en mi programa de instalación (versión 4 de PowerShell)
Get-Process | Where-Object {$_.Path -like "*something*"} | Stop-Process -processname {$_.ProcessName}
El siguiente comando elimina los procesos en los que "algo" es parte de la ruta o es un parámetro de línea de comando. También resulta útil para la terminación de scripts de PowerShell como powershell -command c:\my-place\something.ps1
corriendo de un lugar something.ps1
c:\my-place
:
gwmi win32_process | Where-Object {$_.CommandLine -like "*something*"} | % { "$(Stop-Process $_.ProcessID)" }
La solución funciona localmente en mi Windows de 64 bits 10 máquina.
Primera solución funcionó pero sin parámetro -WhatIf – rpeshkov
-WhatIf era sólo un interruptor de seguridad :) –
FYI si coinciden todos los procesos con '-como "*"' y ejecutar el comando, se bloquea su sistema –