-
Notifications
You must be signed in to change notification settings - Fork 293
Open
Description
In PowerShell v3, the ability to use Validation attributes on variables outside of parameters was added.
It is mentioned here in the New v3 Language Features Page.
Here are a few quick examples.
ValidateRange
PS> [ValidateRange(1,10)][int]$ValidateRange = 1
PS> $ValidateRange = 3
PS> $ValidateRange = 11
The variable cannot be validated because the value 11 is not a valid value for the x variable.
At line:1 char:1
+ $ValidateRange = 11
+ ~~~~~~~
+ CategoryInfo : MetadataError: (:) [], ValidationMetadataException
+ FullyQualifiedErrorId : ValidateSetFailure
ValidateSet
PS> [ValidateSet('Test1','Test2','Test3')][string]$ValidateSet = 'Test1'
PS> $ValidateSet = 'Test2'
PS> $ValidateSet = 'Test4'
The variable cannot be validated because the value Test4 is not a valid value for the x variable.
At line:1 char:1
+ $ValidateSet = 'Test4'
+ ~~~~~~~~~~~~
+ CategoryInfo : MetadataError: (:) [], ValidationMetadataException
+ FullyQualifiedErrorId : ValidateSetFailure
ValidateNotNullOrEmpty
PS> [ValidateNotNullOrEmpty()][string]$ValidateNotNullOrEmpty = 'Test1'
PS> $ValidateNotNullOrEmpty = 'Test'
PS> $ValidateNotNullOrEmpty = ''
The variable cannot be validated because the value is not a valid value for the x variable.
At line:1 char:1
+ $ValidateNotNullOrEmpty = ''
+ ~~~~~~~
+ CategoryInfo : MetadataError: (:) [], ValidationMetadataException
+ FullyQualifiedErrorId : ValidateSetFailure
ValidateCount
PS> [ValidateCount(1,10)][array]$ValidateCount = @(1..9)
PS> $ValidateCount += 'test'
PS> $ValidateCount += 'test2'
The variable cannot be validated because the value System.Object[] is not a valid value for the ValidateCount variable.
At line:1 char:1
+ $ValidateCount += 'test2'
+ ~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : MetadataError: (:) [], ValidationMetadataException
+ FullyQualifiedErrorId : ValidateSetFailure
ValidateLength
PS> [ValidateCount(1,10)][string]$ValidateLength = 'Test1'
PS> $ValidateLength = 'Testing2'
PS> $ValidateLength = 'TestOverTen'
The variable cannot be validated because the value TestOverTen is not a valid value for the ValidateLength variable.
At line:1 char:1
+ $ValidateLength = 'TestOverTen'
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : MetadataError: (:) [], ValidationMetadataException
+ FullyQualifiedErrorId : ValidateSetFailure
ValidatePattern
PS> [ValidatePattern('^\d{3}[-.]?\d{3}[-.]?\d{4}$')][string]$ValidatePattern = '800-123-4567'
PS> $ValidatePattern = '000-000-0000
PS> $ValidatePattern = '000-000-00000'
The variable cannot be validated because the value 000-000-00000 is not a valid value for the ValidatePattern variable.
At line:1 char:1
+ $ValidatePattern = '000-000-00000'
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : MetadataError: (:) [], ValidationMetadataException
+ FullyQualifiedErrorId : ValidateSetFailure
ValidateScript
PS> [ValidateScript({Test-Path $_})][string]$ValidateScript = 'C:\Windows\System32\cmd.exe'
PS> $ValidateScript = 'C:\Windows\System32\powercfg.exe'
PS> $ValidateScript = 'C:\Windows\System32\DoesNotExist.exe'
The variable cannot be validated because the value C:\Windows\System32\DoesNotExist.exe is not a valid value for the ValidateScript variable.
At line:1 char:1
+ $ValidateScript = 'C:\Windows\System32\DoesNotExist.exe'
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : MetadataError: (:) [], ValidationMetadataException
+ FullyQualifiedErrorId : ValidateSetFailure
Jaykul, cezarypiatek, mattmcnabb and michaeltlombardi