PowerShellは、またはでマークされたパラメーターの既定値を読み取り、パイプラインから取得した新しい値を割り当てる前にバックアップを作成します。ValueFromPipelineValueFromPipelineByPropertyName
次のコマンドレットを検討してください。
New-Post -Title <string>
Set-Post -InputObject <Post> -Title <string>
以下が適用されます。
New-Postコマンドレットは、プロパティを持つパイプラインに新しく作成されたオブジェクトを返します。PostTitle
- コマンドレットの
InputObjectプロパティはSet-PostValueFromPipeline = true
- コマンドレットの
TitleプロパティSet-Postは でマークされていValueFromPipelineByPropertyName = trueます。
次のコマンドでそれらを組み合わせます。
New-Post -Title "Foo" | Set-Post
Set-Postコマンドレットのプロパティの get アクセサーにブレークポイントを設定するとTitle、次のスタック トレースが生成されます。

ご覧のとおり、コマンドレットのプロパティを、パイプラインから取得したオブジェクトの対応するプロパティの値にバインドするプロセス中に、メソッドがCmdletParameterBinderController.GetDefaultParameterValue呼び出されます。TitleSet-Post