我有3个应用程序实例从不同的地方运行。所有流程都有相似的名称。
如何杀死从特定地点发起的进程?
答案 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.ps1
从something.ps1
c:\my-place
运行gwmi win32_process | Where-Object {$_.CommandLine -like "*something*"} | % { "$(Stop-Process $_.ProcessID)" }
:
{{1}}
该解决方案可在我的64位Windows 10计算机上本地运行。