疑問
- パイプしたオブジェクトはどのパラメータに渡されるのか?
- 複数のパラメータがパイプライン入力を受け取る場合、受け取り先をどう指定するのか?
基本的な受け取り方
PowerShell ではパラメータごとにパイプライン入力の可否が設定されており、許可されたパラメータのみにオブジェクトが渡されます。
また、複数のパラメータがパイプライン入力を受け取る場合、それぞれのパラメータには基本的にパラメータ名と名前が一致する「パイプされたオブジェクトのプロパティ」が渡されるようになっています。
各コマンドレットにおける受け取り方の確認方法
各コマンドレットの詳細は Get-Help <コマンドレット名> -Full
で確認できます。
パイプライン入力の可否は「パイプライン入力を許可する」に記されており、パラメータ名と一致するプロパティのみ受け取る場合には ByPropertyName
が指定されています。
パイプラインの入力を許可する | ByPropertyName | 受け取るもの |
---|---|---|
false | - | パイプライン入力を受け取らない |
true | 指定なし | パイプされたオブジェクト |
true | 指定あり | パラメータ名と一致する、パイプされたオブジェクトのプロパティ |
なお ByValue
が指定されているときには、パイプされたオブジェクトとパラメータの型が一致している場合、もしくは型変換が可能な場合にのみ受け取ることができます。
パイプラインの詳細は Get-Help About_Pipeline
で確認できます。