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」と表示されます。


