Le cas d'utilisation spécifique est:
Get-NetTCPConnection -State Listen -LocalPort 6005 |
Get-Process -PID ???
Où ???
est la propriété OwningProcess
de la sortie de la première applet de commande.
3 réponses
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 }
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.
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
De nouvelles questions
powershell
PowerShell est une ligne de commande multiplateforme et un utilitaire de script de Microsoft. Utilisez cette balise pour les questions sur l'écriture et l'exécution des scripts PowerShell UNIQUEMENT. Les questions de programmation spécifiques à la version multiplateforme PowerShell Core (Windows, macOS et Linux) doivent être étiquetées [powershell-core]. Les questions sur l'administration du système doivent être posées sur Super User ou Server Fault.