Validation Attributes in PowerShell ...Eh! I use them like everyday when I script.......But I noticed this thing recently.
So suppose I have a sample function below:
Now as you see it's nothing fancy..so just run it
It seems that the validation attribute not only just run at the time when you first call the function ..but once you have defined a validation attribute on a parameter then through the lifetime of that variable/parameter if you do assign a new value to it then the validation attribute run against it ..thus guaranteeing that it has the value you wanted.
PS C:\> Test-ValidateRange -Param1 8 Param1 = 8 The variable cannot be validated because the value 11 is not a valid value for the Param1 variable. At line:19 char:5 + $Param1 = 11 + ~~~~~~~~~~~~ + CategoryInfo : MetadataError: (:) [], ValidationMetadataException + FullyQualifiedErrorId : ValidateSetFailure Param1 = 8 PS C:\>
It seems that the validation attribute not only just run at the time when you first call the function ..but once you have defined a validation attribute on a parameter then through the lifetime of that variable/parameter if you do assign a new value to it then the validation attribute run against it ..thus guaranteeing that it has the value you wanted.
There is another very cool thing -- you can use the validation attributes with the variables in your code (only in PowerShell v3). Read the article here in the PowerShellMagazine