2013-06-22 40 views
0

我正在尝试构建一个脚本,用于检查密码是否包含字母,数字和特殊字符。这是我到目前为止:测试密码在PowerShell脚本中有特殊字符

Write-Output " Enter db Password - DO NOT Use spaces - " 
Write-Output " No part of the username can be contained in the password" 

    do {$pdb=read-host " Must have 8 characters include at least 1 number & 1 special character i.e. [email protected]" 

    $string = $pdb 
    $pat = "^[a-zA-Z0-9\s]+$" 
    $special = [regex]"[^a-zA-Z0-9]" 
    } 

    while (!$pdb -or 

     !($pdb.length -ge 8) -or 

     ($pdb.Contains($pat)) -or 

     ($pdb.Contains($special)) 

    ) 

它大部分我想要的。如果我输入密码猫并按Enter键,则会再次提示输入密码。如果我放入cats1234,它会通过并且脚本结束。我想让它再次提示,只有当我输入cats1234 $时才会通过。

谢谢!

回答

1

试试这个:

do { 
    $psw=read-host "Must have 8 characters include at least 1 number & 1 special character i.e. [email protected]" 
} while (
    $psw.length -lt 8 -or $psw -notmatch '[^a-zA-Z0-9]' -or $psw -notmatch '\d' 
) 

$psw 
+0

这主要工作。如果有人输入所有数字和特殊字符,它不会被捕获.i.e 12345678!通过,它应该失败。但是这让我更接近我想要做的事情。谢谢!!! – user1846439