ja-JP/about_Pipelines.help.txt

TOPIC
    about_Pipelines

簡単な説明
    パイプラインは、複数のコマンドをパイプ演算子 (|) でつないで、
    あるコマンドの出力を次のコマンドの入力として渡すしくみです。
    (PSHelpJaJP 日本語パッチ版)

詳細な説明
    パイプラインとは、パイプ演算子 (|) で連結された一連のコマンドの
    ことです。各パイプ演算子は、直前のコマンドの結果を次のコマンドへ
    送ります。

    コマンドは左から右へ順番に処理され、出力は生成された順に表示
    されます。PowerShell はパイプライン内のオブジェクトを「1 つずつ」
    処理します。これは、コレクション全体をパラメーターとして一括で
    渡す場合と大きく異なる点です。

    パイプラインの基本的な構文は次のとおりです。

        Command-1 | Command-2 | Command-3

    例として、次のパイプラインは 4 つの処理を連結し、ファイルを
    絞り込み、並べ替え、表として整形します。

        Get-ChildItem -Path *.txt |
          Where-Object {$_.Length -gt 10000} |
            Sort-Object -Property Length |
              Format-Table -Property Name, Length

    上の例では、まず .txt ファイルを取得し、サイズが 10000 バイトを
    超えるものだけを抽出し、サイズ順に並べ替えてから表示しています。

パイプラインによるパラメーターのバインド
    あるコマンドがパイプライン入力を受け取るには、次の 3 つの条件を
    すべて満たす必要があります。

        1. そのパラメーターがパイプライン入力を受け付けること
        2. そのパラメーターが、送られてくるオブジェクトの型を
           受け付けること
        3. そのパラメーターがコマンド内で既に指定されていないこと

    パイプライン入力を受け付ける方法には 2 種類あります。

    ByValue (値による)
        パラメーターが、想定する .NET 型、または変換可能な型に
        一致する値を受け取ります。

    ByPropertyName (プロパティ名による)
        入力オブジェクトに、パラメーター名と同じ名前のプロパティが
        ある場合にのみ、その値を受け取ります。

    例:

        # 文字列 "Notepad" が ByValue で -Name にバインドされる
        "Notepad" | Get-Process

        # Name プロパティを持つオブジェクトが
        # ByPropertyName で -Name にバインドされる
        [pscustomobject]@{ Name = "pwsh" } | Get-Process

エラーの調査
    バインドに失敗すると、PowerShell はパイプされたオブジェクトを
    受け取り側のパラメーターに関連付けできません。Trace-Command
    コマンドレットを使うと、実行中のパラメーターバインドを追跡して
    原因を調べられます。

        Trace-Command -Name ParameterBinding -PSHost -Expression {
            "test" | Get-Process
        }

行の継続
    パイプラインは複数行に分割して書けます。行末にパイプ演算子を
    置く方法のほか、PowerShell 7 以降では次の行の先頭にパイプ演算子
    を置く方法も使えます。

        Get-ChildItem
          | Where-Object Name -like "*.txt"
          | Sort-Object Length

注意
    パイプラインはオブジェクトを 1 つずつ流すため、大量のデータでも
    メモリ効率よく処理できます。一方、Format-* コマンドレットは表示用
    の整形オブジェクトを生成するため、原則としてパイプラインの最後に
    置いてください。

関連項目
    about_Command_Syntax
    about_Objects
    about_Parameters
    about_Operators
    Where-Object
    Sort-Object
    Trace-Command

----
原文: PowerShell-Docs (CC BY 4.0) の翻訳 / PSHelpJaJP