Powershell将进程的pid添加到FileVersionInfo

时间:2019-04-03 15:12:17

标签: powershell

我必须使用不同的路径运行使用相同可执行文件的进程。因此,如果您在Get进程上使用-getname-它们将显示为相同。当我使用FileVersionInfo属性时,可以看到哪个程序。我必须编写一个脚本来杀死“ DOG”进程。

PS F:\>  Get-Process Casper -FileVersionInfo

ProductVersion   FileVersion      FileName
--------------   -----------      --------
5.5.2.0          5.5.2.33678      C:\Program Files (x86)\foo\DOG III\Casper.exe
5.5.4.1          5.5.4.4163       C:\Program Files\foo\CATS NG (PROD)\Casper.exe

如何添加每个进程的pid,以便可以隔离它并在需要时将其杀死。

Get-Process Casper | Select Id
Id
--
16894
19456

1 个答案:

答案 0 :(得分:2)

您可以运行以下命令:

Get-Process Casper | Select ProductVersion,FileVersion,Path,Id

如果运行Get-Process Casper | Get-Member,则可以看到System.Diagnostics.Process对象类型可用的大多数属性。输出的底部包含一些您可以访问的ScriptProperty类型。使用-FileVersionInfo开关时会显示Path,ProductVersion和FileVersion。

如果您不喜欢Path属性名称,则可以在select语句中对其重命名:

Get-Process Casper | Select ProductVersion,FileVersion,@{n="FileName";e={$_.Path}},Id

您可以使用where()方法通过路径名来缩小搜索范围:

(Get-Process Casper).where({$_.Path -like "*DOG III*"}) | 
   Select ProductVersion,FileVersion,@{n="FileName";e={$_.Path}},Id

如果您确实只需要Id即可传送到另一个程序,则可以使用以下命令:

(Get-Process Casper).where({$_.Path -like "*DOG III*"}).Id | Some-Command