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関数の部分だけなので簡単に実装できる。
関数分けしたりトラップしたりがベタなコードになってしまったが、とりあえずこんなこともできるよという事で。
0 件のコメント:
コメントを投稿