当验证字符串参数的长度:ValidateLength - 无最大长度
[Parameter(Mandatory=$false)]
[ValidateLength(6,128)]
[string]$value
是否可以不强制最大长度(仅最小值)?我试过了:
[ValidateLength(6,0)]
但是这样会产生运行时错误。
当验证字符串参数的长度:ValidateLength - 无最大长度
[Parameter(Mandatory=$false)]
[ValidateLength(6,128)]
[string]$value
是否可以不强制最大长度(仅最小值)?我试过了:
[ValidateLength(6,0)]
但是这样会产生运行时错误。
直接使用该属性是不可能的。
该属性的参数是[int]
s,因此可以隐式设置的最大值是。
,但不能直接使用该表达式,因为您需要文字。
所以,你可以硬编码的但[int]
价值可能在技术上是在不同的平台不同尺寸(话又说回来,2 GB的字符串,甚至可能没有这么辛苦编码2147483647未必是最坏的事情)。
我在我的测试脚本有一个错字,并认为这是无法直接使用,但事实证明,这是不正确(感谢马蒂亚斯让我回去检查一遍):
[ValidateLength(6, [int]::MaxValue)]
我在版本5.1上测试过,但看起来这可能不适用于v2,我不确定何时添加完全支持。
另一种可能性是通过脚本来验证:
[ValidateScript({ $_.Length -ge 6 })]
如果你想有一个更好的错误消息,总是有throw
招:
[ValidateScript({ $_.Length -ge 6 -or $(throw [System.ArgumentException]"String must be at least 6 characters") })]
此外,由比尔的建议和Ansgars,你可以验证一个正则表达式:
[ValidatePattern('^.{6,}$')]
'[ValidateLength(6,[int] :: MaxValue)]'在我测试时运行正常,即使从PowerShell外部启动脚本。另一种选择是'[ValidatePattern('^。{6,} $')]'。 –
或者:在运行时检查长度,如果太短,则会发出错误。 (具有让你编写自己的错误信息的好处。) –
@AnsgarWiechers我也添加了正则表达式检查。 – briantist
1)使用非常长的最大长度。 2)使用'[ValidatePattern('。{6}。*')]'。 (虽然这个错误并不是那么漂亮)3)使用'[ValidateScript({$ _。Length -gt 5})]''(同样的问题与错误的错误,尽管如此。)4)检查最小长度该函数而不是参数属性,并且如果太短会引发错误(例如,在运行时检查长度)。 –