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


