具體的使用情況是:如何將PowerShell cmdlet輸出的屬性傳遞到其他cmdlet的輸入中?
Get-NetTCPConnection -State Listen -LocalPort 6005 |
Get-Process -PID ???
???
哪裏是從所述第一小命令的輸出的OwningProcess
屬性。
具體的使用情況是:如何將PowerShell cmdlet輸出的屬性傳遞到其他cmdlet的輸入中?
Get-NetTCPConnection -State Listen -LocalPort 6005 |
Get-Process -PID ???
???
哪裏是從所述第一小命令的輸出的OwningProcess
屬性。
-Id
參數通過屬性名稱接受管道輸入,因此您必須添加具有包含PID的正確名稱的另一個屬性。儘管可能,我通常只是使用直接路由:
幾種方法來做到這一點。當變量不能與屬性匹配時,您可以使用ForEach-Object
循環(如Joey's answer),或者如果您想要做一些瘋狂的事情,可以調整管道對象以適合需要。
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