验证PowerShell参数是否为字母数字

jam*_*iet 1 powershell

我只想验证参数是否只由字母数字字符组成.我试过这个,但它不像我想的那样:

param(
    [ValidatePattern('[a-zA-Z0-9]')]$someVariableThatShouldOnlyContainAlphaNumerics = 'something_with_underscores'
)
write-host $someVariableThatShouldOnlyContainAlphaNumerics
Run Code Online (Sandbox Code Playgroud)

返回:

something_with_underscores

我显然遗漏了一些明显的东西.有什么建议?

Mat*_*att 7

ValidatePattern支持正则表达式.如果模式匹配,则验证字符串.你没有验证字符串中的所有字符......只有一个!

更改正则表达式模式以匹配整个字符串将是一种方法.其他正则表达式也足够了.

[ValidatePattern('^[a-zA-Z0-9]+$')]$someVariableThatShouldOnlyContainAlphaNumerics = 'something_with_underscores'
Run Code Online (Sandbox Code Playgroud)

请注意,设置默认值将绕过此验证,因为它未传递给函数.