根据RegEx生成随机密码

时间:2014-03-11 02:03:14

标签: powershell powershell-ise

我正在尝试生成一个6个字符的密码,但我希望每个字母都匹配正确的RegEx。

RegEx是:

[a-z][A-Z][0-9][a-z][!@#$%^&*?+][A-Z]

我现在在这里:

$passwd = @(1..6)
For ($i = 0; $i -lt $passwd.length; $i++){
Get-Random $passwd[$i] 
}

但这一切正在产生6个随机整数。

我想使用Get-Random cmdlet

2 个答案:

答案 0 :(得分:1)

这是“生成6个随机整数”,因为这正是你告诉它要做的事情。 $passwd是一个整数1到6的数组,然后你通过循环遍历该数组基本上调用Get-Random 6次:

Get-Random 1
Get-Random 2
Get-Random 3
Get-Random 4
Get-Random 5
Get-Random 6

相反,您需要每个允许/必需字符的数组,然后从中选择,并将它们放在一起。有关非常类似情况的解决方案,请参阅this answer

答案 1 :(得分:0)

行。

@(
  [char](97..122 | get-random),
  [char](65..90 | get-random),
  (0..9 | get-random),
  [char](97..122 | get-random),
  ('!','@','#','$','%','^','&','*','?',';','+' | get-random),
  [char](65..90 | get-random)
 ) -join ''