2017-04-20 1 views

Répondre

3

Le paramètre -Id accepte l'entrée pipeline par nom de propriété, vous devez donc ajouter une autre propriété avec le nom approprié contenant le PID. Bien que possible, j'utilise généralement la route directe:

Get-NetTCPConnection | ForEach-Object { Get-Process -Id $_.OwningProcess } 
2

Deux façons de le faire. Lorsque les variables ne peuvent pas correspondre à la propriété, vous pouvez soit utiliser une boucle ForEach-Object comme dans Joey's answer ou si vous voulez faire quelque chose de fou, vous pouvez adapter l'objet de pipeline pour répondre aux besoins.

Get-NetTCPConnection -State Listen -LocalPort 6005 | 
    Select-Object @{Name="PID";E={$_.OwningProcess}} | 
    Get-Process 

Depuis Get-Process cherche à correspondre à la PID propriété variable pipeline, nous utilisons simplement une propriété calculée pour lui donner ce qu'il veut. L'utilisation ForEach-Object dans ce cas est beaucoup plus simple. Je voulais juste que tu saches qu'il y avait un autre moyen.

3

Vous avez ici quelques options que je peux voir. Tout d'abord, et le plus simple, vous pouvez diriger à une boucle ForEach-Object, et exécuter Get-Process en ce que:

Get-NetTCPConnection -State Listen -LocalPort 6005 | 
    ForEach-Object { 
     Get-Process -PID $_.OwningProcess 
    } 

Alternativement, si vous exécutez Get-Help Get-Process -PArameter Id vous pouvez voir que le paramètre Id accepte les valeurs du pipeline par nom de la propriété, de sorte que vous pourrait créer cette propriété, et juste diriger directement à Get-Process:

Get-NetTCPConnection -State Listen -LocalPort 6005 | 
    Select @{l='Id';e={$_.OwningProcess}} | 
    Get-Process