如何将 PowerShell cmdlet 输出的 属性 通过管道传输到不同 cmdlet 的输入中?
How do I pipe a property of a PowerShell cmdlet output into an input of a different cmdlet?
具体用例为:
Get-NetTCPConnection -State Listen -LocalPort 6005 |
Get-Process -PID ???
其中 ???
是第一个 cmdlet 输出的 OwningProcess
属性。
-Id
参数通过 属性 名称接受管道输入,因此您必须添加另一个 属性 并使用包含 PID 的正确名称。虽然可能,但我通常只使用直接路由:
Get-NetTCPConnection | ForEach-Object { Get-Process -Id $_.OwningProcess }
有几种方法可以做到这一点。当 属性 无法匹配变量时,您可以像 中那样使用 ForEach-Object
循环,或者如果您想做一些疯狂的事情,您可以定制管道对象以满足需要。
Get-NetTCPConnection -State Listen -LocalPort 6005 |
Select-Object @{Name="PID";E={$_.OwningProcess}} |
Get-Process
因为 Get-Process
正在寻找匹配管道变量 属性 PID,我们只使用计算的 属性 来满足它的需要。
在这种情况下使用ForEach-Object
要简单得多。只是想让你知道还有另一种方法。
我可以看到你在这里有几个选项。首先,也是最简单的,您可以将其通过管道传输到 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
具体用例为:
Get-NetTCPConnection -State Listen -LocalPort 6005 |
Get-Process -PID ???
其中 ???
是第一个 cmdlet 输出的 OwningProcess
属性。
-Id
参数通过 属性 名称接受管道输入,因此您必须添加另一个 属性 并使用包含 PID 的正确名称。虽然可能,但我通常只使用直接路由:
Get-NetTCPConnection | ForEach-Object { Get-Process -Id $_.OwningProcess }
有几种方法可以做到这一点。当 属性 无法匹配变量时,您可以像 ForEach-Object
循环,或者如果您想做一些疯狂的事情,您可以定制管道对象以满足需要。
Get-NetTCPConnection -State Listen -LocalPort 6005 |
Select-Object @{Name="PID";E={$_.OwningProcess}} |
Get-Process
因为 Get-Process
正在寻找匹配管道变量 属性 PID,我们只使用计算的 属性 来满足它的需要。
在这种情况下使用ForEach-Object
要简单得多。只是想让你知道还有另一种方法。
我可以看到你在这里有几个选项。首先,也是最简单的,您可以将其通过管道传输到 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