Powershell добавляет pid процесса в FileVersionInfo - PullRequest
1 голос
/ 03 апреля 2019

У меня есть процессы, которые запускаются по разным путям и используют один и тот же исполняемый файл. Так что, если вы используете -getname в процессе Get - они отображаются одинаково. Когда я использую свойство FileVersionInfo, я вижу, какая программа какая. Я должен написать сценарий, который убьет процесс "СОБАКА".

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 Ответ

2 голосов
/ 03 апреля 2019

Вы можете запустить следующее:

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

Если вы запустите Get-Process Casper | Get-Member, вы увидите большинство свойств, доступных для типа объекта System.Diagnostics.Process. Нижняя часть вывода содержит несколько ScriptProperty типов, к которым вы можете получить доступ. Path, ProductVersion и FileVersion - это то, что отображается при использовании переключателя -FileVersionInfo.

Если вам не нравится имя свойства 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...