28

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

如何杀死从特定位置启动的进程?

4

5 回答 5

55

可以获取应用路径:

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

这仅适用于本地机器。要终止远程进程:

Get-WmiObject Win32_Process -Filter "ExecutablePath LIKE '%something%'" -ComputerName server1 | Invoke-WmiMethod -Name Terminate
于 2012-04-22T07:25:56.690 回答
7

我想稍微改进一下 Shay Levy 的答案,因为它在我的设置中效果不佳(powershell 版本 4)

Get-Process | Where-Object {$_.Path -like "*something*"} | Stop-Process -Force -processname {$_.ProcessName}
于 2017-09-01T16:46:34.593 回答
0

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

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

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

于 2012-04-22T07:19:18.537 回答
0

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

Stop-Process -processname notepad
于 2014-03-20T20:41:47.217 回答
0

下面的命令会杀死其中“某物”是路径的一部分或者是命令行参数的进程。它还被证明对于终止 powershell 脚本很有用,例如从地方
powershell -command c:\my-place\something.ps1运行:something.ps1c:\my-place

gwmi win32_process | Where-Object {$_.CommandLine -like "*something*"}  | % { "$(Stop-Process $_.ProcessID)" }

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

于 2017-12-28T17:30:13.017 回答