ValueFromPipeline 名前付き引数
高度な関数は、パイプラインからのデータを受け取ることも可能です。この場合は「ValueFromPipeline名前付き引数」を使用します。リスト6はRecvData
というパラメーターにValueFromPipeline
属性を指定しています。
01: function Use-PipeLine 02: { 03: [CmdletBinding()] 04: Param 05: ( 06: [parameter(Mandatory=$true, 07: ValueFromPipeline=$true)] 08: [String] 09: $RecvData 10: ) 11: Process 12: { 13: Write-Host $RecvData 14: } 15: }
Use-PipeLine
関数ををパイプラインを通して使用する例を次に示します(図5)。
PS> 1..3 | Use-PipeLine
パラメータ属性にValueFromPipeline
を指定したからと行って、必ずパイプラインを通す必要はなく、次のように通常の関数のようにして使用することも可能です(図6)。
PS> Use-PipeLine 3
AllowEmptyString 属性
通常、Mandatory
属性を使用して必須にしたパラメーターは、空文字を使用することができません。これを回避することができるようAllowEmptyString
属性が準備されています。
AllowEmptyString
属性はParameter()
の中に記述することはできず、リスト7に示すように単独で[AllowEmptyString()]
と記述します(6行目)。
01: function Use-AllowEmptyString 02: { 03: [CmdletBinding()] 04: param( 05: [parameter(Mandatory=$true)] 06: [AllowEmptyString()] 07: [String] 08: $Date 09: ) 10: process{ 11: Write-Host $Date 12: } 13: }
まとめ
今回は、高度な関数について紹介しました。高度な関数の作成方法を覚えておけば、VB.NETやC#を使用しなくても、コマンドレットと似た動作をする関数を作成できることをお分かりいただけたかと思います。
今回紹介したパラメーター属性は、主要なものだけを取り上げており、すべてを紹介したものではありません。
興味を持たれた方はぜひ下記のように入力して、他の属性についても調べてみることをお勧めします。
PS> Help about_Functions_Advanced_Parameters