Я бы использовал для этого Group-Object
.
$Processes = (Get-NetTCPConnection).OwningProcess | Group-Object |
Where-Object {$_.Count -gt 4}
$Array = $Processes | Foreach-Object {
Get-Process -Id $_.Name | Select-Object -ExpandProperty Path
}
$Array
Объяснение:
Group-Object групп по свойству или значению,Вывод представляет собой коллекцию GroupInfo
объектов, имеющих свойство Name
, которое содержит сгруппированное значение. Он содержит свойство Count
, которое подсчитывает количество совпадающих значений. Передача этого объекта в Where-Object
позволяет создать условие, основанное на свойстве Count
($_.Count -gt 4
).
Каждое значение Name
в коллекции GroupInfo
соответствует идентификатору процесса. Вы можете направить эти идентификаторы процессов в Get-Process , используя параметр -Id
. Вывод Get-Process
будет объектом Process
, который содержит свойство Path
. В зависимости от процесса Path
может быть или не быть пустым.
Select-Object с -ExpandProperty
вернет расширенное свойство для каждого элемента конвейерной коллекции.