當驗證字符串參數的長度: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)檢查最小長度該函數而不是參數屬性,並且如果太短會引發錯誤(例如,在運行時檢查長度)。 –