1
我剛剛注意到,如果您在函數中使用參數變量ValidateSet
,則不能在該函數內將參數變量更改爲不在該集合中的值。ValidateSet如何停止將變量更改爲非設置值?
下面是一個簡單的例子來說明:
Function Test {
[cmdletbinding()]
Param(
[ValidateSet(1,2,3)]
[int]$Number
)
$Number = 4
}
Test 3
返回:
變量不能驗證,因爲該值4不是Number變量的有效值。
我用Get-Member
探索$Number
,我看不出它如何(爲什麼)限制變量任何這樣的跡象。我認爲這是某種自定義對象或強打字,但變量看起來是System.Int32
。有誰知道這是怎麼發生的?
這並不是唯一的Int
變量,這只是一個簡單的例子。我發現對於String Array參數也是如此。
如果有某個PowerShell wiki,我會強烈建議您將這些信息放在其中! –
FWIW,對於賦值的「強」型約束也是如此,比較'[bool] $ a = $ true;(變量a).Attributes'和'$ b = $ true;(變量b).Attributes' –