Le cas d'utilisation spécifique est:

Get-NetTCPConnection -State Listen -LocalPort 6005 |
    Get-Process -PID ???

??? est la propriété OwningProcess de la sortie de la première applet de commande.

0
Lucas 20 avril 2017 à 23:03

3 réponses

Meilleure réponse

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

Get-NetTCPConnection | ForEach-Object { Get-Process -Id $_.OwningProcess }
3
Joey 20 avril 2017 à 20:10

Deux façons de le faire. Lorsque les variables ne peuvent pas être mises en correspondance par propriété, vous pouvez soit utiliser une boucle ForEach-Object comme dans réponse de Joey ou si vous voulait faire quelque chose de fou, vous pouvez personnaliser l'objet pipeline pour qu'il réponde aux besoins.

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

Puisque Get-Process cherche à faire correspondre la propriété de variable de pipeline PID, nous utilisons simplement une propriété calculée pour lui donner ce qu'il veut.

Utiliser ForEach-Object dans ce cas est beaucoup plus simple. Je voulais juste que tu saches qu'il y avait un autre moyen.

2
Community 23 mai 2017 à 11:46

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

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

Sinon, 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 propriété, vous pouvez donc créer cette propriété et simplement diriger directement vers Get-Process:

Get-NetTCPConnection -State Listen -LocalPort 6005 | 
    Select @{l='Id';e={$_.OwningProcess}} |
    Get-Process
3
TheMadTechnician 20 avril 2017 à 20:13