2011年1月12日水曜日

◆パラメータ属性

Powershellのパラメータには様々な属性が用意されている。
例えば、あるパラメータを必須にしたければParameter属性のMandatory引数を指定すれば良い。指定の仕方はこんな感じだ。

001
002
003
004
005
006

Param(
[parameter(Mandatory=$true)]
[string]$name
)

Write-Host $name

nameパラメータを指定せずに実行すると以下のようなプロンプトが表示される。
20110112162751

合わせてHelpMessage引数を指定すると簡易ヘルプを表示させることもできる。

001
002
003
004
005
006
007

Param(
[parameter(Mandatory=$true,
HelpMessage="あなたの名前を入力してください")]
[string]$name
)

Write-Host $name

20110112163617 <!--EndFr

 

必須パラメータの引数にNullを許可するようにするにはAllowNull属性を使う。

001
002
003
004
005
006
007
008
009
010
011
012

Param(
 
[parameter(Mandatory=$true)]
  [object]
  [AllowNull()]
  $obj
)

if($obj
){
 
Write-Host $obj.
GetType()
}
else
{
 
Write-Host "obj = null"
}

AllowNull属性を指定せずにパラメータにNullを指定した場合は以下のようなエラーとなる。
20110113115356

似たようなものに、Stringの必須引数に空の文字列を許可するAllowEmptyString属性などがある。

その他にはValidation系の属性がいくつか揃っている。
たとえば、ValidateLength属性は文字列の長さを限定できる。

001
002
003
004
005
006
007
008
009

Param(
 
[parameter(Mandatory=$true)]
  [string]
  [ValidateLength(1,10)]
  $name
)

{
以下のパラメータが指定されました}
Write-Host $name
<
!-20110113144619 -End

ValidatePattern 属性は引数の検証パターンを正規表現で指定する。

001
002
003
004
005
006
007
008
009

Param(
 
[parameter(Mandatory=$true)]
  [string]
  [ValidatePattern("\d{3}-\d{3}-\d{4}")]
  $phone
)

{
以下のパラメータが指定されました}
Write-Host $phone
End

20110113145620

他にも色々と属性はあるので詳細はabout_Functions_Advanced_Parametersを参照すると良い。

0 件のコメント:

コメントを投稿