Mandatory 名前付き引数
高度な関数のパラメーターが必須であることを示すようにするには「Mandatory名前付き引数」を使用します。
パラメーターの前に、Mandatory名前つき引数を次のように記述すると、必須のパラメーターになります。
[Parameter(Mandatory=$true)]
この属性を指定しなかった場合には、パラメーターは省略可能であることを示します。リスト1は、Name
というパラメーターが必須であることを示しています。
Param ( [Parameter(Mandatory=$true)] [String]$Name )
もしもName1
とName2
という2つの必須パラメーターを持たせたい場合には、リスト2のように、それぞれのパラメーターの前に [Parameter(Mandatory=$true)]
を記述します。
Param ( [Parameter(Mandatory=$true)] [String]$Name1, [Parameter(Mandatory=$true)] [String]$Name2 )
ここで、必須なパラメータを1つ持つ高度な関数の例(リスト3)を見てみましょう。
01: function Say-Hello 02: { 03: [CmdletBinding()] 04: Param( 05: [Parameter(Mandatory=$true)] 06: [string] $Name 07: ) 08: Process 09: { 10: Write-Host ("こんにちは " + $Name + " さん") 11: } 12: }
リスト3は挨拶をするSay-Hello
という関数です。この関数はName
という必須のパラメータを1つ取ることがわかります(6行目)。関数本体であるProcess{}
中では、受け取ったパラメーターName
を使用して、「こんにちは XX さん」と表示します。
実際の使用例は図1の通りとなります。
Position名前付き引数
Position
名前付き引数を使用すると、パラメーターの位置を指定することができます。
たとえば、リスト4は3つのパラメータ$A
,$B
,$C
を持ち、受け取ったパラメータの値を$A
,$B
,$C
という順番で表示するものです。それぞれパラメーターは位置指定をしており、$A
が1番目、$B
が3番目、$C
が2番目となります。
01: function Disp-Param 02: { 03: [CmdletBinding()] 04: Param( 05: [parameter(Position=0)] 06: [string] $A, 07: [parameter(Position=2)] 08: [string] $B, 09: [parameter(Position=1)] 10: [string] $C 11: ) 12: Process 13: { 14: Write-Host ($A + ":" + $B +":" + $C) 15: } 16: }
リスト4を実行してみた例が図2です。パラメーターに「1 2 3」と与えていますが、Position
指定がされているため、結果として受け取った値が「1 3 2」と表示されます。