2010年11月24日水曜日

◆変数の値を限定する

 

001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
020
021
022
023

#$arg = ""
function funcArgCheck
{
   
param($arg
)
   
trap
{
       
"引数の範囲は"
        (get-variable vari -Scope script).Attributes |
         %{if($_ -is [Management.Automation.ValidateSetAttribute]
){
        
$_ | select -ExpandProperty validvalues;"です";break
} }
    }
   
$script:vari = "one"
    Get-LimitedArg "One","Two","Three"
    $script:vari = $arg
    Write-host $arg "OK`n"
}

function Get-LimitedArg($values
){
   
$opt = New-Object Management.Automation.ValidateSetAttribute
 `
     
-ArgumentList $values
    (Get-variable vari -Scope script).Attributes.Add($opt
)
}


funcArgCheck "Two"
funcArgCheck 
"Five"

ValidateSetAttributeを使って変数の値範囲を制限してみた。

本質的な部分はGet-LimitedArg関数の部分だけなので簡単に実装できる。

関数分けしたりトラップしたりがベタなコードになってしまったが、とりあえずこんなこともできるよという事で。

結果は、
20101124211630

0 件のコメント:

コメントを投稿