In PowerShell v2, function parameters could be decorated with validation attributes. In PowerShell v3, these attributes can now also be applied to plain variables, ensuring for example that they keep a certain range, thus producing more robust code:
PS> [ValidateRange(1,10)][int]$x = 5 PS> $x=12 The variable cannot be validated because the value 12 is not a valid value for the x variable. At line:1 char:1 + $x=12 + ~~~~~ + CategoryInfo : MetadataError: (:) [], ValidationMetadataException + FullyQualifiedErrorId : ValidateSetFailure