Need help with ValidatePattern

I am trying to validate user input using ValidatePattern

param (
[Parameter(Position=0,mandatory=$true)] # Parameter is mandatory

  $GtVer = $UserIp.ToString()

This code worked perfectly fine in PS 3.0 but failed in 2.0 throwing below error. How can i achieve this in PS 2.0 ?

Parameter attributes need to be a constant or a script block.
At D:\Scripts\Paramv.ps1:3 char:39

  •         [ValidatePattern("^\d{4}$" <<<< )]
    • CategoryInfo : ParserError: (:slight_smile: , ParseException
    • FullyQualifiedErrorId : ParameterAttributeArgumentNeedsToBeConstantOrScriptBlock

Out of curiosity, have you added [CmdletBinding()] just above the param() block?

Hi Don Jones

Thank you for helping me, I tried that as well but no avail.

I got it right when i used single quote instead of double quotes, However it works in both ways with PS 3.0 !


Thank you

Looks like that trailing $ causes problems in PowerShell v2, even though it doesn’t actually cause any expansion to take place. It worked when I put a backtick before the $ (in a double-quoted string). In this case, though, single quotes are more appropriate anyway.

Ah, beat me to it. Ya, dug out a v2 VM and observed the same thing. Strikes me as a bug, which is obviously fixed, but a search in Connect didn’t turn anything up. Likely the team noticed it and fixed it internally for v3.

Anyway, Nithun, there’s a kind of “good practice” to use single quotes unless you explicitly need the feature of double quotes (variable replacement, escape characters, subexpressions), which helps avoid this problem (as Dave suggested).

Thank you so much Don and Dave for the inputs, I am very new to and it was my first post here.
Feel so special and blessed to be a part of this.

Good day

Go to this video and jump to the 19:24 mark or they have it bookmarked on the right.

Even better watch the whole video > even better the whole series is so awesome and has helped me greatly!