具体的用例是:
Get-NetTCPConnection -State Listen -LocalPort 6005 |
Get-Process -PID ???其中???是第一个cmdlet输出的OwningProcess属性。
发布于 2017-04-20 20:10:22
-Id参数根据属性名接受管道输入,因此您必须添加另一个包含PID的正确名称的属性。虽然可能的话,我通常只使用直接的路线:
Get-NetTCPConnection | ForEach-Object { Get-Process -Id $_.OwningProcess }发布于 2017-04-20 20:13:32
我能看到你们有几个选择。首先,也是最简单的,您可以将其输送到ForEach-Object循环,然后运行Get-Process:
Get-NetTCPConnection -State Listen -LocalPort 6005 |
ForEach-Object {
Get-Process -PID $_.OwningProcess
}或者,如果运行Get-Help Get-Process -PArameter Id,您可以看到Id参数根据属性名接受管道中的值,因此您可以创建该属性,并直接将其输送到Get-Process。
Get-NetTCPConnection -State Listen -LocalPort 6005 |
Select @{l='Id';e={$_.OwningProcess}} |
Get-Process发布于 2017-04-20 20:13:03
有几种方法可以做到。当变量不能由属性匹配时,可以使用类似于ForEach-Object的Joey's answer循环,或者如果您想做一些疯狂的事情,可以根据需要定制管道对象。
Get-NetTCPConnection -State Listen -LocalPort 6005 |
Select-Object @{Name="PID";E={$_.OwningProcess}} |
Get-Process 由于Get-Process希望匹配管道变量属性PID,所以我们只使用计算出的属性来满足它的需要。
在这种情况下使用ForEach-Object要简单得多。只是想让你知道还有别的办法。
https://stackoverflow.com/questions/43528884
复制相似问题