私は、ファンクション内のパラメータ変数にValidateSet
を使用している場合、そのファンクション内では、そのパラメータ変数をセット内にない値に変更できないことに気付きました。ここでValidateSetは、変数が設定されていない値に変更されるのをどのように停止しますか?
は、実証するための簡単な例です:
Function Test {
[cmdletbinding()]
Param(
[ValidateSet(1,2,3)]
[int]$Number
)
$Number = 4
}
Test 3
戻り値:値4は、Number変数の有効な値ではありませんので、
変数を検証することはできません。
私は$Number
を探索するGet-Member
を使用していると私はそれがこのような変数を制限する方法(または、なぜ)のいずれかの表示を見ることができません。私はそれが何らかの種類のカスタムオブジェクトまたは強い型指定だと仮定していますが、変数はSystem.Int32
のように見えます。誰がどのように/なぜこれが起こるか知っていますか?
これはInt
変数に固有のものではありません。これは単なる例に過ぎません。私はString Arrayのパラメータで同じことが分かっています。
どこかにPowerShell wikiがある場合は、この情報をここに配置することを強くお勧めします。 –
FWIW、代入の "強い"型制約についても同じです。 '[bool] $ a = $ true;(変数a).Attributesと$ b = $ true;(変数b).Attributes' –