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' –