如何区分使用相同名称的不同进程?

时间:2015-01-23 15:54:43

标签: windows powershell

所以我正在运行我的程序的几个实例,我必须能够从PowerShell中以一种好的方式区分实例。由于每个实例都安装在一个单独的文件夹中,我认为我可以使用:

get-process -Name MyProgram* | Select-Object name, path

并获取一个列表,显示进程启动的文件夹。不幸的是,这返回路径为空。 所以我尝试了许多其他属性,这些属性可能是唯一的,但所有这些属性都是空的。 我究竟做错了什么?或者我可以做其他事情吗?

我正在使用Windows 8顺便说一句。

2 个答案:

答案 0 :(得分:2)

你能使用PID吗?或者你的程序是否启动子进程。 Path对我有用,例如:

Get-Process iexplore | Select-Object ID, Name, Path

   Id Name     Path
   -- ----     ----
10792 iexplore C:\Program Files (x86)\Internet Explorer\IEXPLORE.EXE
13928 iexplore C:\Program Files (x86)\Internet Explorer\IEXPLORE.EXE
17144 iexplore C:\Program Files\Internet Explorer\iexplore.exe
17772 iexplore C:\Program Files\Internet Explorer\IEXPLORE.EXE
20896 iexplore C:\Program Files (x86)\Internet Explorer\IEXPLORE.EXE

ExecutablePathCommandLine会返回任何内容吗?

Get-WmiObject -Class Win32_Process -Filter "Name LIKE 'iexplore%'" | Select-Object ProcessID, Name, ExecutablePath, Commandline

ProcessID Name         ExecutablePath                                        Commandline
--------- ----         --------------                                        -----------
    17144 iexplore.exe C:\Program Files\Internet Explorer\iexplore.exe       "C:\Program Files\Internet Explorer\iexplore.exe" ...
    32016 iexplore.exe C:\Program Files (x86)\Internet Explorer\IEXPLORE.EXE "C:\Program Files (x86)\Internet Explorer\IEXPLORE...
    36744 iexplore.exe C:\Program Files\Internet Explorer\IEXPLORE.EXE       "C:\Program Files\Internet Explorer\IEXPLORE.EXE" ...

如果该进程不属于您,则需要以admin / elevated。

运行它

答案 1 :(得分:1)

您必须使用提升的权限运行才能查看您不是所有者的进程的路径信息。