パイプライン パラメーターのバインド
Windows PowerShell コマンドで操作するオブジェクトを指定するには、実行ごとにそのパラメーターを 1 つのみ使用します。 あるコマンドから別のコマンドにデータをパイプ処理する場合、そのパラメーターを指定する必要はありません。 これにより、完全なコマンド ステートメントが読みやすくなります。 ただし、コマンドを実行するとき、コマンドがどのように動作するかがわかりにくい場合があります。 次のようなコマンドについて考えてみます。
Get-ADUser -Filter {Name -eq 'Perry Brill'} | Set-ADUser -City Seattle
この例では、 Set-ADUser は間接的な方法で入力を受け入れます。つまり、入力としてユーザー オブジェクトが必要です。 Set-ADUser を直接実行している場合は、ユーザー名を渡してユーザーを識別できますが、このコマンドではこれを行いません。 代わりに、Get-ADUser 生成されるオブジェクトは 、Set-ADUser によってパイプラインから取得されます。 Set-ADUser には、表示できる 1 つのパラメーターではなく、2 つのパラメーターが渡されます。 Windows PowerShell では、 パイプライン パラメーター バインドと呼ばれるプロセスで他のパラメーターが目に見えない方法で使用されます。
パイプラインで 2 つのコマンドを接続すると、パイプライン パラメーターのバインドは最初のコマンドの出力を受け取り、その処理を決定します。 このプロセスでは、2 番目のコマンドのいずれかのパラメーターを選択して、その出力を受け取ります。 Windows PowerShell には、それを決定する 2 つの手法があります。 Windows PowerShell が常に最初に使用しようとする最初の手法は、 ByValue という名前です。 2 番目の手法は ByPropertyName という名前で、 ByValue が失敗した場合にのみ使用されます。