特定のユースケースは、次のとおりPowerShellコマンドレット出力のプロパティを別のコマンドレットの入力にパイプするにはどうすればよいですか?
???
最初レットからの出力の
OwningProcess
特性である
Get-NetTCPConnection -State Listen -LocalPort 6005 |
Get-Process -PID ???
。
特定のユースケースは、次のとおりPowerShellコマンドレット出力のプロパティを別のコマンドレットの入力にパイプするにはどうすればよいですか?
???
最初レットからの出力の
OwningProcess
特性である
Get-NetTCPConnection -State Listen -LocalPort 6005 |
Get-Process -PID ???
。
-Id
パラメータは、プロパティ名によるパイプライン入力を受け付けるため、PIDを含む適切な名前を持つ別のプロパティを追加する必要があります。可能であれば、通常は直接ルートを使用します:
これを行う方法はいくつかあります。変数がプロパティによって照合できないときは、Joey's answerのようにForEach-Object
ループを使用するか、何か狂ったことをしたい場合は、ニーズに合わせてパイプラインオブジェクトを調整できます。 Get-Process
以来
Get-NetTCPConnection -State Listen -LocalPort 6005 |
Select-Object @{Name="PID";E={$_.OwningProcess}} |
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