簡単な説明
パラメーター バインドは、PowerShell で使用されているパラメーター セットを決定し、コマンドのパラメーターに値を関連付ける (バインドする) プロセスです。 これらの値は、コマンド ラインとパイプラインから取得できます。
長い説明
パラメーター バインド プロセスは、コマンド ライン引数をバインドすることによって開始されます。
名前付きパラメーターをバインドする
コマンド ラインで、ダッシュで始まる引用符で囲まれていないトークンを見つけます。 トークンがコロンで終わる場合は、引数が必要です。 コロンがない場合は、パラメーターの型を確認し、引数が必要かどうかを確認します。 値が必要な場合は、引数の型をパラメーターで必要な型に変換しようとすると、変換が成功したら、パラメーターをバインドします。
位置指定パラメーターをバインドする
使用されていないコマンド ライン引数がある場合は、位置指定パラメーターを受け取るバインドされていないパラメーターを探し、バインドを試みます。
コマンド ライン引数をバインドすると、PowerShell はパイプライン入力のバインドを試みます。 パイプラインから値をバインドする方法は 2 つあります。 パイプライン入力を受け入れるパラメーターには、次の属性のいずれかまたは両方があります。
- ValueFromPipeline - パイプラインからの値は、その型に基づいてパラメーターにバインドされます。 引数の型は、パラメーターの型と一致する必要があります。
- ValueFromPipelineByPropertyName - パイプラインの値は、その名前に基づいてパラメーターにバインドされます。 パイプライン内のオブジェクトには、パラメーターの名前またはそのエイリアスのいずれかに一致するプロパティが必要です。 プロパティの型は、パラメーターの型と一致するか、型に変換できる必要があります。
PowerShell は、パイプライン入力を次の順序でバインドしようとします。
型変換なしでパラメーター
ValueFromPipelineバインドしてみてください。タイプの完全一致の値でパイプラインからバインドされます。 コマンドにパイプライン入力があり、まだバインドされていないパラメーターがある場合は、型に正確に一致するパラメーターにバインドしてみてください。
型変換なしでパラメーター
ValueFromPipelineByPropertyNameバインドしてみてください。一致する値が見つからない場合は、完全に一致する名前でパイプラインからバインドします。 パラメーターの名前またはそのエイリアスのいずれかに一致する入力オブジェクトのプロパティを探します。 型が完全に一致する場合は、パラメーターをバインドします。
パイプライン入力がバインドされていない場合は、型変換を使用してパラメーター
ValueFromPipelineバインドしてみてください。パイプライン入力を必要な型に変換しようとします。 変換が失敗した場合、パラメーターはバインドされません。
パイプライン入力がバインドされていない場合は、型変換を使用してパラメーター
ValueFromPipelineByPropertyNameバインドしてみてください。プロパティの名前は、パラメーターの名前またはそのエイリアスのいずれかと一致する必要があります。 入力の種類が一致しない場合は、入力を一致する型に変換します。 変換が失敗した場合、パラメーターはバインドされません。
パラメーター バインドを視覚化する
パラメーター バインドの問題のトラブルシューティングは困難な場合があります。 Trace-Command コマンドレットを使用して、パラメーター バインド プロセスを視覚化できます。 次の例は、単純なパイプラインのパラメーター バインドをトレースする方法を示しています。
Trace-Command -PSHost -Name ParameterBinding -Expression {
Get-Item *.txt | Remove-Item
}
出力には、式内のコマンドのパラメーター バインド プロセスのすべてのステップが表示されます。 出力は詳細ですが、パラメーターが予期したとおりにバインドされていない理由を理解するのに役立ちます。 完全な例については、Visualize パラメーター バインドの に関する記事を参照してください。
PowerShell