按文件名杀死进程

时间:2012-04-22 06:55:01

标签: powershell

我有3个应用程序实例从不同的地方运行。所有流程都有相似的名称。

如何杀死从特定地点发起的进程?

5 个答案:

答案 0 :(得分:43)

您可以获取应用程序路径:

Get-Process | Where-Object {$_.Path -like "*something*"} | Stop-Process -WhatIf

这仅适用于本地计算机。终止远程进程:

Get-WmiObject Win32_Process -Filter "ExecutablePath LIKE '%something%'" -ComputerName server1 | Invoke-WmiMethod -Name Terminate

答案 1 :(得分:3)

我想略微改进Shay Levy的答案,因为它在我的设置上没有奏效(PowerShell版本4)

Get-Process | Where-Object {$_.Path -like "*something*"} | Stop-Process -Force -processname {$_.ProcessName}

答案 2 :(得分:2)

试试这个: http://technet.microsoft.com/en-us/library/ee177004.aspx

Stop-Process -processname notepad

答案 3 :(得分:0)

您可以查看Process类中的MainModule属性(可以通过powershell调用)。

foreach (Process process in Process.GetProcesses())
{
   if (process.MainModule.FileName == location)
   {
       process.Kill();
   }
}

我还会考虑调用此代码时可能发生的异常。如果您尝试访问不再存在的进程(自上次调用GetProcess以来被杀死)或者您没有权限时进程,则可能会发生这种情况。

答案 4 :(得分:0)

以下命令会杀死进程,其中"某些事情"是路径的一部分或是命令行参数。它也有助于终止PowerShell脚本,例如powershell -command c:\my-place\something.ps1something.ps1 c:\my-place运行gwmi win32_process | Where-Object {$_.CommandLine -like "*something*"} | % { "$(Stop-Process $_.ProcessID)" }

{{1}}

该解决方案可在我的64位Windows 10计算机上本地运行。